Python爬虫入门,快速抓取大规模数据(第四部分)
如果没有读过前两部份的读者,建议先看前面几部份:
Python爬虫入门(第一部分)
Python爬虫入门(第二部分)
Python爬虫入门(第三部分)
当前大部分网站都使用JS动态的加载内容,浏览器执行JS并生成网页内容。因为Python的requests库不会像浏览器一样执行JS,所以抓取到的内容并不是最终网页呈现内容。解决这个问题的方法也很简单,我们使用浏览器来执行JS生成内容,然后再提取需要的数据。
selenium webdriver简介
selenium webdriver就是我们这里要用来控制浏览器执行JS生成内容的工具。WebDriver是通过调用浏览器原生的自动化API直接驱动浏览器,目前主流的浏览器都提供自动化API。因此我们可以很容易的通过webdriver提供的API操纵浏览器访问网页生成内容,并返回数据。
通过python的pip工具我们可以很方便的安装selenium模块, pip install selenium。安装完成之后,让我们简单的试一试webdriver驱动浏览器打开网页.
爬虫实例中的应用
现在让我们回到我们的爬虫的例子上,原来我们是用requests库抓取内容,现在我们使用webdriver驱动浏览器的方式来获取网页内容。这样就能获取到执行了JS动态加载内容的网页。
通常浏览器都会打开一个窗口,但对于爬虫而言这是没有必要的。幸运的是,我们可以使用phantomjs来替代浏览器。PhantomJS是一个基于webkit的无UI的浏览器,几乎所有在浏览器上能做到的事情也能在PhantomJs上做到。PhantomJs广泛的用于网络监测、Web测试和页面访问自动化。
使用代码上和我们前面使用浏览器的并无很多的不同,唯一的区别也只在于我们初始化浏览器代码的不同。
总结
这一部分中我们简单的讨论了如何使用webdriver获取动态加载网页的内容。事实上webdriver还有很多非常有趣的应用,后面有机会我们会再看看。继续阅读下一部分。