js抓取网页内容(Python爬虫入门,快速抓取*敏*感*词*数据(第二部分)(组图))
优采云 发布时间: 2021-10-08 12:30js抓取网页内容(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驱动浏览器打开网页。
from selenium import webdriver
browser = webdriver.Firefox()
browser.get("https://blog.csdn.net/nj_kevin_peng/")
爬虫实例中的应用
现在让我们回到我们的爬虫示例。最初,我们使用 requests 库来获取内容。现在我们使用 webdriver 来驱动浏览器来获取 web 内容。这样就可以得到执行JS动态加载内容的网页了。
if __name__== "__main__":
...
# 抓取网页内容
browser = webdriver.Firefox()
browser.get("https://blog.csdn.net/nj_kevin_peng/")
content = driver.page_source
browser.quit()
# 提取页面包含的数据
soup = BeautifulSoup(content, "html.parser")
get_web_data(soup)
...
通常浏览器会打开一个窗口,但这对于爬虫来说不是必需的。幸运的是,我们可以使用phantomjs来代替浏览器。PhantomJS 是一个没有 UI 的基于 webkit 的浏览器。几乎所有可以在浏览器上完成的事情也可以在 PhantomJs 上完成。PhantomJs 广泛用于网络监控、Web 测试和页面访问自动化。
使用的代码与我们之前使用的浏览器没有太大区别,唯一的区别在于我们初始化浏览器的代码。
browser = webdriver.PhantomJS()
总结
在这一部分,我们简要讨论了如何使用 webdriver 获取动态加载的网页内容。事实上,webdriver 有很多非常有趣的应用,有机会我们会再看一遍。
来源:/i65657671/