js抓取网页内容(Python爬虫入门,快速抓取*敏*感*词*数据(第二部分)(组图))

优采云 发布时间: 2021-10-08 12:30

  js抓取网页内容(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/

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线