NEW! |一次 API 调用即可获得干净数据,无需自行抓取。免费领取 10,000 个令牌 →

Selenium Python(6):如何使用 Selenium Stealth 绕过爬虫检测

在网页抓取领域,自动化操作常常会被反爬虫机制识别并拦截,阻止对数据的自动化访问。然而,借助合适的

发布于2024年6月6日
阅读时间1 分钟

在网络抓取领域,自动化通常会受到反机器人机制的阻碍,这些机制会检测并阻止自动访问数据。但是,使用正确的工具和技术,可以绕过这些检测并成功抓取所需的数据。在本文中,我们将探讨如何使用 Selenium Stealth 使您的抓取工作更加谨慎和有效。

硒简介及其挑战#

Selenium 是一种流行的自动化网络浏览器工具,允许用户以编程方式浏览网站并与网站元素进行交互。但是,许多网站都已采取措施来检测和阻止自动浏览,识别 Selenium 特有的模式。这可能会导致访问被阻止或返回不正确的数据。

关键点:

  • 自动化检测: 网站可以检测 Selenium 并阻止访问。
  • 常见问题: 返回不正确的数据或者阻止用户。

什么是 Selenium Stealth?#

Selenium Stealth 是一个库,旨在通过模仿人类的浏览行为来降低自动浏览的可检测性。它修改了 Selenium WebDriver,使其看起来更像普通用户的浏览器,从而绕过了许多反机器人措施。

Selenium Stealth 的特点:

  • 模仿人类的浏览行为。
  • 绕过常见的 Selenium 检测机制。

设置 Selenium Steleth#

要开始使用 Selenium Stealth,您需要安装 Selenium 和 Selenium Stealth 库。下面是设置 Selenium Stealth 并将其与您的 Selenium 脚本集成的步骤。

安装步骤:

安装 Selenium:

pip install selenium

安装 Selenium Stealth:

pip install selenium-stealth

示例:使用 Selenium Stealth 进行抓取#

下面是如何设置和使用 Selenium Stealth 从网站抓取数据同时绕过检测的分步示例。

步骤 1:导入库

from selenium import webdriver
from selenium_stealth import stealth

步骤 2:使用 Stealth 设置 WebDriver

options = webdriver.ChromeOptions()
driver = webdriver.Chrome(options=options)

stealth(driver,
        languages=["en-US", "en"],
        vendor="Google Inc.",
        platform="Win32",
        webgl_vendor="Intel Inc.",
        renderer="Intel Iris OpenGL Engine",
        fix_hairline=True)

driver.get('https://example.com')

步骤 3:执行抓取任务

# Example: Finding elements and extracting data
element = driver.find_element_by_class_name('example-class')
data = element.text
print(data)

嵌入表格以清晰显示#

为了更好地理解,这里有一个表格总结了这些步骤及其目的:

步骤描述
1导入 Selenium 和 Selenium Stealth 库。
2设置 WebDriver 并应用隐身修改。
3执行网页抓取任务而不被发现。

Selenium Stealth 的先进技术#

为了进一步增强你的抓取能力,请考虑实施以下高级技术:

处理动态内容:

  • 使用 WebDriverWait 处理动态加载的元素。
  • 示例:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "dynamicElement"))
)

轮换代理:

  • 轮换代理以避免 IP 被禁止。
  • 示例:
options.add_argument('--proxy-server=http://your.proxy.server:port')

常见错误及疑难解答#

即使使用 Selenium Stealth,您也可能会遇到一些问题。以下是一些常见错误及其解决方法:

  • DriverNotFound错误: 确保安装了正确的 WebDriver 并且正确设置了其路径。
  • 超时异常: 使用 WebDriverWait 正确处理动态元素。

总结#

通过将 Selenium Stealth 与 Selenium 脚本集成,您可以显著降低被检测到的机会,并成功从实施反机器人措施的网站抓取数据。这种方法有助于保持访问并检索准确的数据,使您的网页抓取工作更加高效和可靠。

请记住,始终确保您的抓取活动符合网站的服务条款和法律准则。