Python网络数据抓取(7):Selenium 模拟

链式潮涌
• 阅读 62

引言

Selenium 是一个用于测试网页和网络应用的框架。它兼容多种编程语言,并且除了 Chrome 浏览器之外,还能得到其他多种浏览器的支持。Selenium 提供了应用程序编程接口(API),以便与你的浏览器驱动程序进行交互。

实战

现在,我们通过一个简单的网页数据抓取实例来深入了解这个框架。我们的目标是利用 Selenium 抓取一个内容会动态变化的网站,以沃尔玛网站为例。首先,我们需要安装 Selenium。在你的命令行终端中输入以下指令来完成安装。

pip install selenium

Python网络数据抓取(7):Selenium 模拟

我们的工作是打开这个网站并提取 HTML 代码并打印它。因此,第一步是导入文件中的所有库。

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

然后我们将设置selenium提供的选项。我们将设置页面大小,并以无头格式运行它。

以无头形式运行它的原因是为了避免额外使用 GUI 资源。即使在外部服务器上的生产中使用 selenium,也建议您以无头模式使用它,以避免浪费 CPU 资源。这最终会增加您的成本,因为您需要添加更多服务器来实现负载平衡。

options = Options()
options.headless = True
options.add_argument(“ — window-size=1920,1200”)

现在,我们将声明我们的驱动程序,您必须使用安装 chromium 驱动程序的路径。

PATH_TO_DRIVER='YOUR_PATH_TO_CHROIUM_DRIVER'

driver = webdriver.Chrome(options=options, executable_path=PATH_TO_DRIVER)

url="https://www.walmart.com/search/?query=python%20books"

我们还声明了我们的目标 URL。现在,我们只需要使用它的 .get() 方法来打开驱动程序。

driver.get(url)

time.sleep(4)
print(driver.page_source)

我在打印 HTML 之前使用 sleep 方法完全加载网站。我只是想确保在打印之前网站已完全加载。

在打印时,我们使用了 selenium 的 page_source 属性。这将为我们提供当前页面的来源。这就是我们打印结果时得到的结果。

Python网络数据抓取(7):Selenium 模拟

我们已经获取了必要的 HTML 页面内容。和亚马逊类似,沃尔玛也实施了反机器人检测机制,但在进行网页抓取时,还需要进行 JavaScript 的渲染处理。

某些网站之所以需要 JavaScript 渲染,是因为它们需要加载所有的 JavaScript 钩子。当这些钩子全部加载完成后,我们可以通过在浏览器中完全加载页面后提取页面源代码,一次性完成数据抓取。

有些网站为了完整加载需要进行大量的 AJAX 请求。因此,我们通常会采用 JavaScript 渲染的方式来替代传统的 GET HTTP 请求进行抓取。如果你想知道一个网站是否需要 JavaScript 渲染,可以通过检查网站的网络标签来确定。

此外,JavaScript 渲染还能提供一些可能对你将来有用的属性,例如:

  • driver.title:可以用来获取页面的标题。
  • driver.orientation:可以告诉你设备相对于重力的方向。

使用 Selenium 的好处:

  • 它支持多种编程语言,使用非常灵活。
  • 可以在测试或生产的早期阶段发现潜在的错误。
  • 拥有活跃的社区支持。
  • 支持多种浏览器,如 Chrome、Mozilla 等。
  • 在进行数据抓取时非常方便。

使用 Selenium 的不足:

  • Selenium 不支持图像比较功能。
  • 使用起来比较耗时。
  • 对于初学者来说,搭建测试环境可能稍显复杂。

本文由mdnice多平台发布

点赞
收藏
评论区
推荐文章
浅梦一笑 浅梦一笑
4年前
分别用python2和python3伪装浏览器爬取网页内容
python网页抓取功能非常强大,使用urllib或者urllib2可以很轻松的抓取网页内容。但是很多时候我们要注意,可能很多网站都设置了防采集功能,不是那么轻松就能抓取到想要的内容。今天我来分享下载python2和python3中都是如何来模拟浏览器来跳过屏蔽进行抓取的。最基础的抓取:!/usr/bin/envpythoncodingutf8@Au
如何使用Python的Selenium库进行网页抓取和JSON解析
随着互联网的快速发展,网页抓取和数据解析在许多行业中变得越来越重要。无论是电子商务、金融、社交媒体还是市场调研,都需要从网页中获取数据并进行分析。Python的Selenium库作为一种自动化测试工具,已经成为许多开发者的首选,因为它提供了强大的功能和灵活
Stella981 Stella981
3年前
Selenium+Python对开源中国官网进行模拟登录
1.摘要:Selenium是一个开源的和便携式的自动化软件测试工具,用于测试Web应用程序有能力在不同的浏览器和操作系统运行。Selenium不是一个单一的工具,而是一套工具,帮助测试者更有效地基于Web的应用程序的自动化。我们这里用到的python:python3.6操作系统:archlinux
Stella981 Stella981
3年前
Python 使用selenium抓取网页文本和下载音频
Python使用selenium抓取网页文本和下载音频!\usr\bin\envpythoncoding:utf8'一个自动从https://podcast.duolingo.com/spanish中下载音频并且爬取文本的程序''需要配置下载以下所需库,并且配置好webdriv
Stella981 Stella981
3年前
Chrome handless模式
我们在通过Selenium运行自动化测试时,必须要启动浏览器,浏览器的启动与关闭必然会影响执行效率,而且还会干扰你做其它事情(本机运行的话)。那能不能把自动化测试的运行放在后台?当然可以!Chromeheadless模式,Google针对Chrome浏览器59版新增加的一种模式,可以让你不打开UI界面的情况下使用Chrome浏览器
Stella981 Stella981
3年前
Selenium使用及原理
1、Selenium介绍Selenium是一个Web测试工具,通过直接控制浏览器来实现Web测试,与真实用户操作完全一致。Selenium目前支持IE、Firefox、Chrome、Safari、Opera等浏览器,Selenium支持主流的操作系统平台Windows、Linux、Mac等,Selenium支持Java、Ruby、Python
Python进阶者 Python进阶者
2年前
练习爬虫,我想问一下这个xpath语句为啥找不到元素,感谢大佬!
大家好,我是皮皮。一、前言前几天在Python钻石交流群【萤火】问了一个Python网络爬虫的问题,下图是截图:下图是报错截图:二、实现过程这里【error】给了一个代码,如下所示,满足粉丝的需求:用selenium没找到的话,大概率是网页还没渲染出来,代码就运行到了抓取规则,所以抓不到。其实他的匹配规则是可以拿到数据的,只不过用jupyter运行sel
铁笛仙 铁笛仙
2年前
Selenium中控制Chorme浏览器会闪退
selenium控制浏览器会闪退,有可能是webdriver控制器的版本太低,和主机上的Chrome版本号不兼容了。
崇恩圣帝 崇恩圣帝
1年前
极验滑动验证码识别系统实现
在网络世界中,极验滑动验证码是常见的人机验证形式之一,通过拖动滑块拼合图像来完成验证。本文将介绍如何使用Python和Selenium库来实现极验滑动验证码的自动识别和验证过程。准备工作在开始之前,请确保已经安装好了Selenium库和Chrome浏览器,
小白学大数据 小白学大数据
10个月前
Python爬虫教程:Selenium可视化爬虫的快速入门
网络爬虫作为获取数据的一种手段,其重要性日益凸显。Python语言以其简洁明了的语法和强大的库支持,成为编写爬虫的首选语言之一。Selenium是一个用于Web应用程序测试的工具,它能够模拟用户在浏览器中的操作,非常适合用来开发可视化爬虫。本文将带你快速入