抓取动态网页( 谷歌浏览器和F火狐爬取动态网页对比一下的区别)

优采云 发布时间: 2021-12-18 09:04

  抓取动态网页(

谷歌浏览器和F火狐爬取动态网页对比一下的区别)

  

  前言

  当我们抓取网页时,其中一些是静态的。对于这种类型的网页,我们可以使用通用的方法轻松抓取数据。但是,一些网页抓取阈值仍然存在。它们是动态的,通过js(包括ajax)渲染。这类网页一般的爬虫方法是爬不上去的,可能爬不出来指定的数据。这个时候,我们必须转变思路来解决问题。所谓道高一尺,魔高一尺。本文文章介绍了使用Splash和selenium爬取动态网页,并比较了两者的区别。

  版本介绍

  本文中提到的各种工具的版本

  硒

  Selenium 是一种用于 Web 应用程序测试的工具。Selenium 测试直接在浏览器中运行,就像真实用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11), Mozilla Firefox, Safari, Google Chrome, Opera等。本工具的主要功能包括: 测试与浏览器的兼容性-test 看看您的应用程序可以在不同的浏览器和操作系统上运行良好 测试系统功能-创建回归测试以验证软件功能和用户需求。

  以上是百度百科的解释。通过上面的解释,我们可以很容易的理解selenium的用途了。是的,很容易想到自动化测试场景。开发者编写一个函数,然后测试者可以编写相应的测试用例来模拟浏览器来测试该函数。(会写自动化脚本的测试人员据说和普通测试人员不是一个级别的)

  上面百科里提到,使用selenium的时候,操作就像使用浏览器一样。那么,我们以什么方式运作呢?更常用的 Google Chrome 和 F Firefox 都提供了无头版本的浏览器

  无头浏览器

  无头浏览器是指可以运行图形界面的浏览器。我可以通过编程来控制无头浏览器自动执行各种任务,例如测试、网页截图等。

  我们可以通过浏览器提供的headless版本打开浏览器。第一个使用点是先在电脑上安装相应的普通版浏览器,然后通过代理购买程序操作浏览器

  火狐无头浏览器下载地址:

  谷歌浏览器无头下载链接:

  这里值得注意的是,无头版谷歌浏览器需要下载与电脑上安装的谷歌浏览器类似的版本。比如电脑上安装的谷歌浏览器的版本是79.*.*,那么下载的headless版本的版本也应该是79.*.*,并且大版本要一致. Firefox 没有这个要求。

  PhantomJS

  说到无头浏览器,就不得不提 PhantomJS。

  PhantomJS 是一个无界面、可编写脚本的 WebKit 浏览器引擎。它本身支持多种 Web 标准:DOM 操作、CSS 选择器、JSON、Canvas 和 SVG。

  现在Python对PhantomJS的支持变成了Selenium,PhantomJS相关的扩展也被废弃了。这只是为了理解。

  Python操作硒

  Python也实现了selenium,通过selenium webdriver调用对应的浏览器进行操作,我们来看一个python使用selenium的简单案例:

  1、 实现唤醒浏览器打开网页

  2、设置无头操作

  # -*- coding: utf-8 -*-

# 引入selenium webdriver类

from selenium import webdriver

# 引入火狐浏览器配置类

from selenium.webdriver import FirefoxOptions

# 实例化一个配置项

options = FirefoxOptions()

# 设置无需打开浏览器

options.add_argument('--headless')

# 设置浏览器类型为火狐

browser = webdriver.Firefox(firefox_options=options)

# 打开一个网址

browser.get('https://item.jd.com/100008348542.html')

# 获取网页源码

source = browser.page_source

print(source)

  上面source=browser.page_source这行代码就是js渲染后得到的网页源代码。拿到源码后就可以为所欲为

  操作方便吗?

  溅

  Splash 是一个 javascript 渲染服务。它是一个带有 HTTP API 的轻量级 Web 浏览器,使用 Twisted 和 QT5 在 Python 3 中实现。QT反应器用于使服务完全异步,允许通过QT主循环利用webkit并发。

  功能介绍参考

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线