大家都应该有需要在百度文库下载文档的经历,或者充值成为微挨批(VIP),或者在某宝买券去下载,也有的勤勤恳恳的上传文章,慢慢的攒下载券,当然也有一点一点的复制粘贴。。。或者也有比较喜欢走捷径的,去什么什么文库等网站下载!或者一些人用其他破解方法,比如放到手机的百度文库APP里,另存为文章,不需要下载券就可以下载文章。诸如此类的方法,可谓五花八门。而对于学习爬虫的人来说,面对怎样免费下载一个付费的word文章的问题,第一个想到的应该就是:
自己写个程序搞下来。
以《中华人民共和国国家标准》为例,来看看怎么用python抓下来这篇文档!
url: https://wenku.baidu.com/view/378bf328fc4ffe473268ab12
感觉应该不难吧,至少开始我是这么想的,但是当我将文档拉到下面的时候,我看到了如下内容:
需要点击“继续阅读”才可以显示后面的内容,单抓这一页,是抓不完我们要的内容的。
那我们来抓包看看?然后一脸懵逼了
一堆不明觉厉的代码,各种广告推广。。。果断放弃!
还有什么办法能抓取内容呢?带着这个思考,selenium神器进入了我的脑海!
安装selenium和浏览器驱动这里就不细说了,大家自行网上查找吧,很多很详细的!
实战阶段
直接在网页中F12查看文档所在位置!
这里可以看到,文档中的内容都在
下面的P标签中,我们先用selenium取得网页源码,然后直接用xpath抓标签,取内容(中间有img标签显示图片的取出url)看看
果然可以,文档内容部分已经取出,接下来就是定位到“继续阅读”标签,模拟点击,然后取后半部分了!
定位代码如下:
page =driver.find_element_by_xpath('//div[@class="banner-more-btn"]').click()
整体代码和效果如下:
至此,完整文档就被我们抓下来了!如果有存在翻页的话,就需要定位后**页,除了第一次之后的都不需要在定位并点击“继续阅读”!当然中间还有图片等等形式的内容存在的文档,以url显示了!总体来说,selenium做爬虫还是比较简单粗暴的。
PS:这里我是用了PhantomJS,如果有用Firefox或者谷歌的小伙伴要注意,最新版的好像不是很友好,建议大家用稍微旧一点的版本!
领取专属 10元无门槛券
私享最新 技术干货