Python爬虫实战:爬取YY上漂亮小姐姐视频
目录
- 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上漂亮小姐姐视频相关推荐
- python爬虫实战,爬取洛杉矶上千房源!
前言 最近打算签证流程结束后,开始看看加州的房子了,毕竟研究生是不太容易住校内的,具体来说还是看看洛杉矶的房源.因为网站在国外,访问比较慢,不同页的也不好比较,于是想着把它全部爬取下来整理成docx文 ...
- Python爬虫实战爬取租房网站2w+数据-链家上海区域信息(超详细)
Python爬虫实战爬取租房网站-链家上海区域信息(过程超详细) 内容可能有点啰嗦 大佬们请见谅 后面会贴代码 带火们有需求的话就用吧 正好这几天做的实验报告就直接拿过来了,我想后面应该会有人用的到吧 ...
- python爬虫实战---爬取大众点评评论
python爬虫实战-爬取大众点评评论(加密字体) 1.首先打开一个店铺找到评论 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多 ...
- Python爬虫,爬取51job上有关大数据的招聘信息
Python爬虫,爬取51job上有关大数据的招聘信息 爬虫初学者,练手实战 最近在上数据收集课,分享一些代码. 分析所要爬取的网址 https://search.51job.com/list/000 ...
- python爬虫实战-爬取微信公众号所有历史文章 - (00) 概述
http://efonfighting.imwork.net 欢迎关注微信公众号"一番码客"获取免费下载服务与源码,并及时接收最新文章推送. 最近几年随着人工智能和大数据的兴起,p ...
- python爬虫实战-爬取视频网站下载视频至本地(selenium)
#python爬虫实战-爬取视频网站下载视频至本地(selenium) import requests from lxml import etree import json from selenium ...
- python爬虫实战--爬取猫眼专业版-实时票房
小白级别的爬虫入门 最近闲来无事,发现了猫眼专业版-实时票房,可以看到在猫眼上映电影的票房数据,便验证自己之前学的python爬虫,爬取数据,做成.svg文件. 爬虫开始之前 我们先来看看猫眼专业版- ...
- python爬虫实战-爬取小说
今天做一个爬虫练手的小实战:爬取顶点小说网的小说,实现下载到本地(虽然网站上本来就可以下载,不过还是自己写代码来有成就感嘛!) 爬取网站 进入官网后,点击元尊,就爬取这本书了. 我们先把整个网页爬下来 ...
- Python爬虫实战- 爬取整个网站112G-8000本pdf epub格式电子书下载
(整个代码附在最后) 目录: 爬虫准备 - 某电子书网站内容架构分析 爬虫前奏 - 网站Html代码分析,如何获取需要的链接? 爬虫高潮 - 测试是否有反爬虫措施,测试是否能正常下载一个sample ...
最新文章
- TensorFlow 输出tensor数据
- nginx + uwsgi + Django 应用部署
- ubuntu18安装mysql遇到的root密码问题
- termcap - 终端功能数据库详解
- 零拷贝、mmap、sendfile
- Java IO/NIO教程
- SQL - server 数据库基础知识
- mysql拼接数组_Mysql合并结果接横向拼接字段的实现步骤
- OBIEE-----ClusterControler通信的问题
- 内网远程工具vnc 内网远程工具vnc选择与安装
- ShuffleNet网络学习笔记
- matplotlib柱状图给指定的柱换颜色_matplotlib绘图基本操作amp;美化教程
- QT使用PaddleOCR和百度OCR进行文字识别
- 杨辉三角php程序,PHP写杨辉三角实例代码
- java----正则表达式
- JUC- 常用辅助类
- 为什么一打电话就显示服务器故障,手机打电话黑屏怎么回事?手机打电话时出现黑屏情况的解决办法介绍...
- anaconda3里pkgs可以删除吗,我试过conda clean -a,但用完之后还有10个G,吐血,C盘没空间了,pkgs删除影响虚拟环境吗,毕竟base大多数人用不到啊,求教
- pythontkinter键盘_Python笔记之Tkinter(Key键盘事件)
- 网络爬虫学习第二弹:requests库的使用
热门文章
- 【机器学习】Learning to Rank 简介
- 青云KubeSphere就一个字——“简”
- 涵林同学21浙工大计算机考研心路历程(非正经、无干货)
- setClickable,setEnabled,setFocusable 的区别
- 解密新后缀.phobos勒索病毒 防御措施 解密方法how_to_back
- Phobos家族后缀.actin勒索病毒变体详细说明,删除后缀.actin勒索病毒并尝试恢复文件
- 如何确定SAP系统的NetWeaver版本、ERP或S/4HANA的版本
- 数据分析实战 | 银行 “信贷” 客户的可视化分析
- Linux常用命令——sysctl命令
- JRtplib开发笔记(二):JRtplib库编译、示例演示