抓取动态网页( 谷歌浏览器和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并发。
功能介绍参考