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驱动浏览器的方式来获取网页内容。这样就能获取到执行了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是一个基于webkit的无UI的浏览器,几乎所有在浏览器上能做到的事情也能在PhantomJs上做到。PhantomJs广泛的用于网络监测、Web测试和页面访问自动化。

使用代码上和我们前面使用浏览器的并无很多的不同,唯一的区别也只在于我们初始化浏览器代码的不同。

browser = webdriver.PhantomJS()

总结

这一部分中我们简单的讨论了如何使用webdriver获取动态加载网页的内容。事实上webdriver还有很多非常有趣的应用,后面有机会我们会再看看。

Source: https://www.toutiao.com/i6560061342353457671/

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值