欢迎光临散文网 会员登陆 & 注册

Scrapy抓取虎牙视频 —— 舞蹈

2023-03-14 17:00 作者:码夫破石  | 我要投稿

目标站:https://v.huya.com/

环境

  • Windows 11

  • Pycharm

  • Python 3.8.9

  • Scrapy 2.7.1

思路:

  1. Scrapy的起始页为:https://v.huya.com/

  2. 频道页为:https://v.huya.com/g/all

  3. 网页播放页为:https://v.huya.com/play/840864137.html,但是通过浏览器的开发者工具并没有发现Media的数据;

  4. 用网页开发者工具抓包发现播放请求的真是地址为:https://liveapi.huya.com/moment/getMomentContent?callback=jQuery1124031254075051677055_1678778517216&videoId=840864137&_=1678778517221

  5. callback后的参数不影响数据,所以确定最终应该请求数据的网址为:https://liveapi.huya.com/moment/getMomentContent?videoId=840864137&_=1678778517221

  6. 上面网址出来的数据为类似Json格式的

  7. 将请求上方网页的数据转换成Json格式,拿到视频真实的地址

  8. 通过Scrapy请求真实的视频地址并下载

正文:

数据很多,不打算爬取整站,所以以舞蹈页面为例。打开终端,切换到项目预存放的位置,如D:\Python Projects:

新建项目:

新建爬虫:

用PyCharm打开项目文件夹(切换到项目文件夹,右键 —— Open Folder as PyCharm Project,也可以先打开PyCharm,然后将项目文件夹拖入)。如有必要,新建一个虚拟环境。我这里没必要,用的是系统本身解释器和依赖项。

第一步:

找到项目文件夹下的items.py,先来定义要爬取的字段。最终的目的是下载视频,只需要两个字段,一个是视频的名称,还有一个就是要请求下载的视频url。代码如下:

第二步:

找到项目文件夹下的spiders文件夹,选中刚刚创建的爬虫huya.py。开始爬取内容:

第三步:

经过上述,提取到数据,就可以切换到项目文件夹下的pipelines.py文件,在其中定义一个类用来下载视频以及重命名:

第四步:

写好之后,在项目文件夹下的settings.py中开启管道并定义下载存储的位置:

打开终端,运行:

下载的视频截图:

猛然发现才爬一页,继续切换到爬虫文件huya.py,在parse方法中定义一下翻页逻辑:

翻页的逻辑定义在next_page_urls那个地方,然后请求的时候给自己回调就行了。

如果要爬取整站,这个爬虫模板就显得吃力了。可以用Scrapy的crawl爬虫模板,制定出爬取规则,理论上就可以爬取整站了。

最后是翻页爬取结果,爬了两分半,下载了将近2G的视频。速度还是蛮快的。

申明:本文仅是作者的笔记,仅供学习交流使用。

Scrapy抓取虎牙视频 —— 舞蹈的评论 (共 条)

分享到微博请遵守国家法律