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

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

引言

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

实战

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

pip install 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 属性。这将为我们提供当前页面的来源。这就是我们打印结果时得到的结果。

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

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

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

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

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

使用 Selenium 的好处:

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

使用 Selenium 的不足:

  • Selenium 不支持图像比较功能。
  • 使用起来比较耗时。
  • 对于初学者来说,搭建测试环境可能稍显复杂。
相关文章
|
7天前
|
机器学习/深度学习 人工智能 算法
【乐器识别系统】图像识别+人工智能+深度学习+Python+TensorFlow+卷积神经网络+模型训练
乐器识别系统。使用Python为主要编程语言,基于人工智能框架库TensorFlow搭建ResNet50卷积神经网络算法,通过对30种乐器('迪吉里杜管', '铃鼓', '木琴', '手风琴', '阿尔卑斯号角', '风笛', '班卓琴', '邦戈鼓', '卡萨巴', '响板', '单簧管', '古钢琴', '手风琴(六角形)', '鼓', '扬琴', '长笛', '刮瓜', '吉他', '口琴', '竖琴', '沙槌', '陶笛', '钢琴', '萨克斯管', '锡塔尔琴', '钢鼓', '长号', '小号', '大号', '小提琴')的图像数据集进行训练,得到一个训练精度较高的模型,并将其
19 0
【乐器识别系统】图像识别+人工智能+深度学习+Python+TensorFlow+卷积神经网络+模型训练
|
10天前
|
机器学习/深度学习 存储 算法
使用Python实现深度学习模型:强化学习与深度Q网络(DQN)
使用Python实现深度学习模型:强化学习与深度Q网络(DQN)
23 2
|
1天前
|
数据采集 存储 JSON
Python 数据抓取教程:完结篇
Python 数据抓取教程:完结篇
11 1
|
2天前
|
存储 Java 网络安全
如何使用Python批量连接网络设备?
【7月更文挑战第4天】
13 1
如何使用Python批量连接网络设备?
|
6天前
|
数据采集 XML API
Python 爬虫数据抓取(10):LXML
Python 爬虫数据抓取(10):LXML
16 1
|
2天前
|
数据采集 存储 API
在信息时代,Python爬虫用于自动化网络数据采集,提高效率。
【7月更文挑战第5天】在信息时代,Python爬虫用于自动化网络数据采集,提高效率。基本概念包括发送HTTP请求、解析HTML、存储数据及异常处理。常用库有requests(发送请求)和BeautifulSoup(解析HTML)。基本流程:导入库,发送GET请求,解析网页提取数据,存储结果,并处理异常。应用案例涉及抓取新闻、商品信息等。
12 2
|
5天前
|
算法 安全 网络安全
网络安全&密码学—python中的各种加密算法
数据加密是一种保护数据安全的技术,通过将数据(明文)转换为不易被未经授权的人理解的形式(密文),以防止数据泄露、篡改或滥用。加密后的数据(密文)可以通过解密过程恢复成原始数据(明文)。数据加密的核心是密码学,它是研究密码系统或通信安全的一门学科,包括密码编码学和密码分析学。
|
5天前
|
数据采集 存储 JSON
解密网络爬虫与数据抓取技术的奇妙世界
【7月更文挑战第2天】网络爬虫是自动化数据抓取的关键工具,用于解锁互联网数据的潜力。本文深入探讨了爬虫基础,包括模拟HTTP请求、HTML解析和数据存储。通过实例展示如何用Python构建简单爬虫,强调法律与伦理考虑,如遵循robots.txt、尊重版权和隐私,以及应对反爬策略。合法、负责任的爬虫技术在商业、科研等领域发挥着重要作用,要求我们在数据探索中保持透明、最小影响和隐私保护。
8 1
|
9天前
|
JSON 数据可视化 API
技术心得:如何用Python和API收集与分析网络数据?
技术心得:如何用Python和API收集与分析网络数据?
17 2
|
4天前
|
缓存 网络协议 Linux
Linux、Python、计算机网络中的常见知识点
Linux、Python、计算机网络中的常见知识点