工作中我们经常会在百度文库中查找下载一些文档,但是最近我们发现百度文库中很多文档"仅限会员下载"或者用“下载券”下载,不开会员连复制都不让,真的让人很不爽!
这时候肯定会有人想到用python写个爬虫下载百度文库的想法,今天我就给各位Python爱好者分享一个简单的Python爬虫脚本,实现自由下载百度文库的文档,让百度下载券一边带着去吧~~
一、准备环境:
1、Python解释器, 3.8版本
2、下载chrom浏览器的web driver(c)
chrom浏览器的web driver(c),可以在下面网址访问:
下载对应的程序后,将解压好的c放入Python安装目录里,至此基本环节已经配置完成
二、分析下载源:
在爬取任何东西之前,我们都要先确认需要爬取的页面数据是不是异步加载;如果是异步加载的页面,直接爬取网页肯定是爬不到的。
测试下载地址:
验证一个页面的内容是否是异步加载很简单,对目标地址发送一个请求(request),然后直接打印出响应(response)结果,看看是不是我们想要的内容,如果没有发现我们想要的内容,那就是异步加载了。
通过实际操作查看,百度文库的页面数据就是通过异步加载的,并且百度文库默认只显示一部分文档内容,那么我们首先要通过python 的selenium模块来模拟点击操作,让浏览器能完全显示出所有内容。
(控制浏览器点击操作代码)
内容完全显示在页面之后,接下来就要分析如何拿到真正想要的数据,
前面我们已经知道这些数据都是通过异步加载显示出来的,所以我们首先要进行抓包操作。
(模拟请求代码)
通过浏览器network数据,最终发现了一条比较长的url请求
md5sum=800ecdee87234530ae25c8ce4abd93bb&sign=5ca3hch8e4&
callback-cb&pn=1&rn=21&type=txt&rsign=p_21-r-0-s_af8f18&_=05
这个请求就是真正返回了我们想要的内容数据,通过这条url我们还可以判断出当前文档的文件id、文件类型、文件标题信息。
(获取关键参数)
获取了文档的基本信息后就可以开始真正的下载保存文件了,由于大多数文档都是 txt和doc文件,所以在此只演示这两种文件的下载代码
(txt、doc文档分别处理)
无论是txt、还是doc文件下载了数据之后都要执行数据保存操作,代码如下:
(文档保存到磁盘)
最后,我们再创建一个主入口函数来执行我们的任务
(主函数入口代码)
至此,我们的python爬取百度文库的小案例就完成了!
下面通过一个视频让大家看一下执行效果
源码下载
想获取源码和更多Python干货学习资料的同学,点击私聊 发送 "资料"
报名参加Python直播训练营,添加专属老师后即可获得全部源码,从此百度文库任性下载!
如果你觉得这篇文章对你有点用的话,就请为本文 留个言,点个在看,或者 转发一下吧,因为这将是我持续输出更多优质文章的最强动力!