js 爬虫抓取网页数据(Python的requests库不会像浏览器一样执行JS并生成网页内容)
优采云 发布时间: 2022-03-31 15:02js 爬虫抓取网页数据(Python的requests库不会像浏览器一样执行JS并生成网页内容)
目前大部分网站使用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 是一个没有 UI 的基于 webkit 的浏览器,几乎所有可以在浏览器上完成的事情也可以在 PhantomJs 上完成。PhantomJs 广泛用于网络监控、Web 测试和页面访问自动化。
使用的代码和我们之前使用的浏览器没有太大区别,唯一不同的是我们初始化浏览器的代码。
总结
这一部分我们简要讨论了如何使用 webdriver 来获取动态加载的网页内容。其实webdriver有很多非常有趣的应用,我们后面会看。继续下一节。