python利用scrapy短短50行代码下载整站短视频
python的优雅之处在于能够让开发者专注于业务逻辑,花更少的时间在枯燥的代码编写调试上。scrapy无疑完美诠释了这一精神。
开发爬虫的一般步骤是:
1、确定要爬取的数据(item)
2、找到数据所在页面的url
3、找到页面间的链接关系,确定如何跟踪(follow)页面
那么,我们一步一步来。
既然是使用scrapy框架,我们先创建项目:
scrapy startproject DFVideo
紧接着,我们创建一个爬虫:
scrapy genspider -t crawl DfVideoSpider eastday.com
这是我们发现在当前目录下已经自动生成了一个目录:DFVideo
目录下包括如图文件:
spiders文件夹下,自动生成了名为DfVideoSpider.py的文件。
爬虫项目创建之后,我们来确定需要爬取的数据。在items.py中编辑:
接下来,我们需要确定视频源的url,这是很关键的一步。
现在许多的视频播放页面是把视频链接隐藏起来的,这就使得大家无法通过右键另存为,防止了视频别随意下载。
但是只要视频在页面上播放了,那么必然是要和视频源产生数据交互的,所以只要稍微抓下包就能够发现玄机。
这里我们使用fiddler抓包分析。
发现其视频播放页的链接类似于:video.eastday.com/a/180926221513827264568.html?index3lbt
视频源的数据链接类似于:mvpc.eastday.com/vyule/20180415/20180415213714776507147_1_06400360.mp4
有了这两个链接,工作就完成了大半:
在DfVideoSpider.py中编辑
至此,一个简单但强大的爬虫便完成了。
如果你希望将视频的附加数据保存在数据库,可以在pipeline.py中进行相应的操作,比如存入mongodb中:
当然,你需要在setting.py中将pipelines打开:
执行结果展示
视频文件: