自制 Python 脚本抓取文库资料,selenium+PhantomJS 爬虫初接触

大家都应该有需要在百度文库下载文档的经历,或者充值成为微挨批(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或者谷歌的小伙伴要注意,最新版的好像不是很友好,建议大家用稍微旧一点的版本!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180517A150O800?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券