目录

  • 1.目标
  • 2.确定数据所在的url
  • 3.发送网络请求
  • 4.数据解析
  • 5.数据保存
  • 6.爬取其他页数据

1.目标

本次目标是爬取YY(https://www.yy.com/)主页分类中小视频板块,里面有很多小姐姐视频,现在我们把它爬下来,看看有你们喜欢的小姐姐吗?

2.确定数据所在的url

首先右键网站点击查看源代码,随便复制一个视频的作者名,去网页源代码中CTRL+F搜索看数据是否存在。

可以看到数据是存在的,所以只要按静态网页爬取的方法就可以了。但是,当我们往下滑的时候,发现这个网页加载新数据的方式是瀑布流的形式,那我们新加载的数据能否在网页源代码中找到呢?


可以看到搜索结果为0。所以我们找数据要通过动态数据抓包的形式去抓取一些动态数据包。(因为这里加载数据采用了AJAX异步加载)
好,现在按F12打开网络调试工具,在network中刷新页面并下滑刷新出新数据后进行数据抓取。

在tinyvideos这个包中找到我们想要的内容。
接下来在headers中分析一下这个url


可以看到这个url是由https://api-tinyvideo-web.yy.com/home/tinyvideosv2这个基础url拼接一些参数得出来的,在简单测试后发现参数里只有data有用,并且可以推断是用来翻页的。

那我们写爬虫的时候就要这样来准备请求的url及其参数:

url = 'https://api-tinyvideo-web.yy.com/home/tinyvideosv2'
params = {'data' : '{"uid":0,"page":1,"pageSize":10}'
}headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36'
}

3.发送网络请求

使用requests库发送网络请求,并查看返回的json数据。

response = requests.get(url=url, headers=headers, params=params)
json_data = response.json()
json_data


可以看到成功获得了想要的数据。
我们也可以使用pprint库这个格式化库来让这个json数据更好看:

pprint.pprint(json_data)

4.数据解析

首先取出列表:

data_list = json_data['data']['data']


有了这个列表我们就可以用for循环去取我们想要的数据,经过简单测试发现’resurl‘就是视频的地址,那我们直接用‘username’作为视频名字,然后用requests库去请求视频url,由于我们得到的数据是视频数据,所以用.content去接收这个二进制数据。

for data in data_list:video_title = data['username'] + '.mp4'# 视频文件名字video_url = data['resurl']# 请求视频数据 video_data = requests.get(url = video_url,headers = headers).content # 提取二进制数据

5.数据保存


由于给文件命名时不能包含这些非法字符,所以我们先用正则表达式写一个替换非法字符的函数:

def change_title(title):#替换非法字符pattern = re.compile('[\\\/\:\*\?\"\<\>\|]')new_title = re.sub(pattern,'_',title)return new_title

接下来就可以写保存的代码了:

for data in data_list:video_title = data['username'] + '.mp4'# 视频文件名字video_url = data['resurl']# 请求视频数据 video_data = requests.get(url = video_url,headers = headers).content # 提取二进制数据# 数据保存new_title = change_title(video_title)with open('video\\'+ new_title,mode='wb') as f:f.write(video_data)print("保存成功:",new_title)

运行代码可以发现,成功保存了我们想要的视频。


并且都是可以正常播放的。

6.爬取其他页数据

分析tinyvideo开头的包发现是data参数中page变化完成的翻页:



那我们就可通过改变这个数字去实现翻页。
下边只演示爬取前10页视频。

for page in range(1,11):print(f"======================正在爬取第{page}页数据===================================")url = 'https://api-tinyvideo-web.yy.com/home/tinyvideosv2'params = {'data' : '{"uid":0,"page":%s,"pageSize":10}' % str(page)}headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36'}response = requests.get(url=url, headers=headers, params=params)json_data = response.json()data_list = json_data['data']['data']for data in data_list:video_title = data['username'] + '.mp4'# 视频文件名字video_url = data['resurl']# 请求视频数据 video_data = requests.get(url = video_url,headers = headers).content # 提取二进制数据# 数据保存new_title = change_title(video_title)with open('video\\'+ new_title,mode='wb') as f:f.write(video_data)print("保存成功:",new_title)

运行代码得到以下结果:


可以看到我们爬下了前10页所有小姐姐的视频,赶紧去看看有没有你喜欢的吧!

Python爬虫实战:爬取YY上漂亮小姐姐视频相关推荐

  1. python爬虫实战,爬取洛杉矶上千房源!

    前言 最近打算签证流程结束后,开始看看加州的房子了,毕竟研究生是不太容易住校内的,具体来说还是看看洛杉矶的房源.因为网站在国外,访问比较慢,不同页的也不好比较,于是想着把它全部爬取下来整理成docx文 ...

  2. Python爬虫实战爬取租房网站2w+数据-链家上海区域信息(超详细)

    Python爬虫实战爬取租房网站-链家上海区域信息(过程超详细) 内容可能有点啰嗦 大佬们请见谅 后面会贴代码 带火们有需求的话就用吧 正好这几天做的实验报告就直接拿过来了,我想后面应该会有人用的到吧 ...

  3. python爬虫实战---爬取大众点评评论

    python爬虫实战-爬取大众点评评论(加密字体) 1.首先打开一个店铺找到评论 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多 ...

  4. Python爬虫,爬取51job上有关大数据的招聘信息

    Python爬虫,爬取51job上有关大数据的招聘信息 爬虫初学者,练手实战 最近在上数据收集课,分享一些代码. 分析所要爬取的网址 https://search.51job.com/list/000 ...

  5. python爬虫实战-爬取微信公众号所有历史文章 - (00) 概述

    http://efonfighting.imwork.net 欢迎关注微信公众号"一番码客"获取免费下载服务与源码,并及时接收最新文章推送. 最近几年随着人工智能和大数据的兴起,p ...

  6. python爬虫实战-爬取视频网站下载视频至本地(selenium)

    #python爬虫实战-爬取视频网站下载视频至本地(selenium) import requests from lxml import etree import json from selenium ...

  7. python爬虫实战--爬取猫眼专业版-实时票房

    小白级别的爬虫入门 最近闲来无事,发现了猫眼专业版-实时票房,可以看到在猫眼上映电影的票房数据,便验证自己之前学的python爬虫,爬取数据,做成.svg文件. 爬虫开始之前 我们先来看看猫眼专业版- ...

  8. python爬虫实战-爬取小说

    今天做一个爬虫练手的小实战:爬取顶点小说网的小说,实现下载到本地(虽然网站上本来就可以下载,不过还是自己写代码来有成就感嘛!) 爬取网站 进入官网后,点击元尊,就爬取这本书了. 我们先把整个网页爬下来 ...

  9. Python爬虫实战- 爬取整个网站112G-8000本pdf epub格式电子书下载

    (整个代码附在最后) 目录: 爬虫准备 - 某电子书网站内容架构分析 爬虫前奏 - 网站Html代码分析,如何获取需要的链接? 爬虫高潮 - 测试是否有反爬虫措施,测试是否能正常下载一个sample ...

最新文章

  1. TensorFlow 输出tensor数据
  2. nginx + uwsgi + Django 应用部署
  3. ubuntu18安装mysql遇到的root密码问题
  4. termcap - 终端功能数据库详解
  5. 零拷贝、mmap、sendfile
  6. Java IO/NIO教程
  7. SQL - server 数据库基础知识
  8. mysql拼接数组_Mysql合并结果接横向拼接字段的实现步骤
  9. OBIEE-----ClusterControler通信的问题
  10. 内网远程工具vnc 内网远程工具vnc选择与安装
  11. ShuffleNet网络学习笔记
  12. matplotlib柱状图给指定的柱换颜色_matplotlib绘图基本操作amp;美化教程
  13. QT使用PaddleOCR和百度OCR进行文字识别
  14. 杨辉三角php程序,PHP写杨辉三角实例代码
  15. java----正则表达式
  16. JUC- 常用辅助类
  17. 为什么一打电话就显示服务器故障,手机打电话黑屏怎么回事?手机打电话时出现黑屏情况的解决办法介绍...
  18. anaconda3里pkgs可以删除吗,我试过conda clean -a,但用完之后还有10个G,吐血,C盘没空间了,pkgs删除影响虚拟环境吗,毕竟base大多数人用不到啊,求教
  19. pythontkinter键盘_Python笔记之Tkinter(Key键盘事件)
  20. 网络爬虫学习第二弹:requests库的使用

热门文章

  1. 【机器学习】Learning to Rank 简介
  2. 青云KubeSphere就一个字——“简”
  3. 涵林同学21浙工大计算机考研心路历程(非正经、无干货)
  4. setClickable,setEnabled,setFocusable 的区别
  5. 解密新后缀.phobos勒索病毒 防御措施 解密方法how_to_back
  6. Phobos家族后缀.actin勒索病毒变体详细说明,删除后缀.actin勒索病毒并尝试恢复文件
  7. 如何确定SAP系统的NetWeaver版本、ERP或S/4HANA的版本
  8. 数据分析实战 | 银行 “信贷” 客户的可视化分析
  9. Linux常用命令——sysctl命令
  10. JRtplib开发笔记(二):JRtplib库编译、示例演示