简单的说说动态页面的抓取

作者: 云中布衣   分类:  学习笔记    热度: (834℃)   时间: 2017-7-30 21:03   标签: #网络爬虫    

我们写爬虫的抓取页面的时候,大多数时候直接使用BeautifulSoup等静态抓取工具获取html源码是没有问题的,基本上你在浏览器上所看到的和你抓取的html代码是呈对应关系的。但是如果你采集过许多网站,很可能遇到这样一种情况,你在浏览器上看到的内容,与你用爬虫从网站上采集的内容不一样。这个时候你可能在怀疑是不是自己哪个细节没有处理好,希望找出内容采集不到的原因。有时候你还会发现,网页用一个加载页面把你引到另一个页面上,但是网页的URL链接在这个过程中并没有改变。比如下面这个天眼查网站,在反爬虫上面做了比较多的工作,利用Js动态加载就是其中之一。

选区_128.png

而这一切都是为因为你的爬虫不能执行那些让页面产生各种神奇效果的JavaScript代码。如果网站HTML页面没有运行JavaScript代码,就可能和你在浏览器里看到的效果完全不一样,因为浏览器可以正确的执行JavaScript代码。

那么使用了Ajax或者DHTML技术改变/加载内容的页面,可能有一些采集手段,但是用Python解决这个问题只有两种途径:

第一种:直接从JavaScript代码里采集内容

第二种:用Python第三方库运行JavaScript,直接采集你在浏览器里看到的页面

今天主要简单的介绍一种利用selenium工具配合PhantomJS"无头"浏览器可以实现动态页面的抓取。这种方法也就是上面第二种途径的实现。

Selenium是一个强大的网络数据采集工具,其最初是为网站自动化测试而开发的。近几年被广泛用于获取精准的网站快照,因为他们可以直接运行在浏览器上。Selenium可以让浏览器自动加载页面,获取需要的数据,甚至页面截屏,或者判断网站上某些动作是否发生。但是Selenium自己不带浏览器,它需要和第三方浏览器结合在一起使用。而PhantomJS就是这样一种存在,PhantomJS是一个无头(headless)浏览器。它会把网站加载到内存并执行页面上的Js,但是它不会向用户展示网页的图形界面。

把Selenium和PhantomJS结合在一起,就可以运行一个非常强大的网络爬虫,可以处理cookie、JavaSript、Header,以及任何你需要做的事。

你可以从PyPI网站(https://pypi.python.org/simple/selenium/)下载Selenium库,当然也可以使用第三方管理器(如pip)用命令行安装。PhantomJS则可以从它的官网(https://phantomjs.org/download.html/)下载,应为PhantomJS是一个功能完善(虽然无头)的浏览器,并非一个Python库,所以它不需要像Python的其他库一样安装,也不能用pip安装,使用的时候直接使用本地地址加载就行。

(完)



56.8K

评论:

云中布衣 Say:
@懿古今 还好啦,不过爬虫还是非常有意思的,特别是需要一些一手的网络数据的时候,可以根据自己的需求去定制爬取。

2017-10-05 17:43


懿古今 Say:
还没有玩过采集,看起来很深奥

2017-10-05 16:57


云中布衣 Say:
@如何写essay  欢迎常来坐坐!~

2017-09-01 23:04


如何写essay Say:
感谢楼主的分享

2017-09-01 15:07


发表评论:

© 云中布衣 2015 | Driven by EMLOG  | SiteMap | RunTime: 9.74ms RSS  | MORE  |   | TOP

文章数量【258】 评论数量【238】 稳定运行【1210天】

Visitor IP Address【54.82.73.21】

Email:ieeflsyu#outlook.com