news 2026/9/29 23:17:28

2025 年使用 SeleniumBase 和 Python 进行网页抓取

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
2025 年使用 SeleniumBase 和 Python 进行网页抓取

在本文中,我将带你了解 SeleniumBase 的核心功能,展示如何用它进行抓取,并分享一些应对当今网络挑战的实用技巧。无论你是刚接触抓取,还是希望进一步提升技能,SeleniumBase 都提供了一种简单直接的入门方式。

什么是 SeleniumBase?

SeleniumBase 是一个基于 Selenium 构建的开源 Python 框架,旨在简化网页自动化任务,包括测试和抓取。与通常需要大量样板代码的标准 Selenium 不同,SeleniumBase 通过内置的数据提取、交互自动化和反机器人规避工具,减少重复编码。

替代方案——自动化网页抓取工具

如果你需要大规模抓取,或抓取使用了高级反抓取技术的复杂网站,我建议可以尝试以下我所在机构正在使用的网页抓取工具:

  1. Bright Data — 高级抓取的综合最佳选择;具备广泛的代理管理功能和可靠的 API。
  2. Octoparse — 易于使用的无代码工具,可从网站自动提取数据。
  3. ScrapingBee — 面向开发者的 API,可高效处理代理、浏览器和 CAPTCHA。
  4. Scrapy — 开源 Python 框架,非常适合数据爬取和抓取任务。
  5. ScraperAPI — 通过高级反机器人技术处理棘手的抓取任务;非常适合开发者。
  6. Apify — 多功能平台,提供现成爬虫工具和强大的抓取能力。

如果想进一步了解每项服务,我推荐阅读我关于网页抓取工具的完整文章。

现在,我们从安装 SeleniumBase 开始。

设置 SeleniumBase

在开始网页抓取之前,你需要在系统上设置 SeleniumBase。步骤如下:

安装 Python:确保你已经安装了 Python。如果还没有,请从官方 Python 网站下载。

安装 SeleniumBase:使用以下命令通过 pip 安装 SeleniumBase:

pip3installseleniumbase

安装 WebDriver:SeleniumBase 会管理 WebDriver 的安装,但如果你愿意,也可以手动下载并将其放入 PATH 中。

验证安装:为确保 SeleniumBase 已正确设置,运行以下命令查看可用选项:

seleniumbase-help

现在你已经安装了 SeleniumBase,我们来创建一个基础爬虫工具。

使用 SeleniumBase 构建基础爬虫工具

使用 SeleniumBase 创建一个简单的网页爬虫,需要设置一个 Python 脚本来与网页交互。在这个示例中,我们将从一个电商演示站点抓取产品详情。

以下是构建基础爬虫的分步指南:

在你的项目目录中创建一个名为 爬虫工具.py 的新文件。

编写以下代码以提取目标页面的完整 HTML 内容:

fromseleniumbaseimportBaseCase

class抓取工具(BaseCase):

deftest_get_html(self):

self.open("https://www.scrapingcourse.com/ecommerce/")

page_html=self.get_page_source()

print(page_html)

运行爬虫工具,使用 pytest 命令:

pytest爬虫.py-s

上述代码会打开电商页面并提取 HTML,然后将其打印到终端。这是更复杂抓取任务的基础。

提取特定数据

为了让爬虫工具更有用,你通常需要定位特定元素,例如产品名称、图片和 URL。SeleniumBase 支持 CSS 选择器、XPath 和 ID 来定位元素。下面展示如何提取不同类型的信息:

抓取产品名称

识别产品名称的 HTML 结构,在本示例中,它位于带有 product-name 类的 h2 标签内。下面的代码演示如何抓取产品名称:

fromseleniumbaseimportBaseCase

class抓取工具(BaseCase):

deftest_get_product_names(self):

self.open("https://www.scrapingcourse.com/ecommerce/")

product_names=self.find_elements("h2.product-name")

names=[product.textforproductinproduct_names]

print(names)

抓取产品图片

要抓取图片 URL,请定位带有 product-image 类的 img 标签。以下代码会提取图片 URL:

fromseleniumbaseimportBaseCase

class爬虫工具(BaseCase):

deftest_get_image_urls(self):

self.open("https://www.scrapingcourse.com/ecommerce/")

image_elements=self.find_elements("img.product-image")

image_urls=[image.get_attribute("src")forimageinimage_elements]

print(image_urls)

抓取产品链接

类似地,从带有 woocommerce-LoopProduct-link 类的 a 标签中提取产品 URL:

fromseleniumbaseimportBaseCase

class抓取工具(BaseCase):

deftest_get_product_links(self):

self.open("https://www.scrapingcourse.com/ecommerce/")

link_elements=self.find_elements("a.woocommerce-LoopProduct-link")

links=[link.get_attribute("href")forlinkinlink_elements]

print(links)

自动化浏览器交互

在某些情况下,抓取静态内容并不够,尤其是对于动态加载内容或需要用户交互的网站。SeleniumBase 支持一系列浏览器操作,包括点击、滚动和表单提交。

示例:自动化表单提交

假设某个站点需要登录凭据。下面是一个用于登录并抓取内容的脚本:

fromseleniumbaseimportBaseCase

class爬虫(BaseCase):

deftest_login_and_scrape(self):

self.open("https://www.scrapingcourse.com/login")

self.type("#email","admin@example.com")

self.type("#password","password")

self.click("button[type='submit']")

self.save_screenshot("after_login.png")

该脚本会填写登录信息、提交表单,并在登录后截取屏幕截图。save_screenshot 函数有助于确认爬虫工具是否正确浏览站点。

规避反机器人措施

网站经常使用各种反机器人措施,例如 CAPTCHA、IP 封禁或 JavaScript 挑战。SeleniumBase 包含一些有助于绕过此类措施的功能,但也存在限制。

使用 UC 模式

SeleniumBase 的 UC(Undetected ChromeDriver)模式允许爬虫通过修改浏览器指纹来模拟真实用户行为。启用方法如下:

fromseleniumbaseimportDriver

class抓取工具(BaseCase):

deftest_bypass_bot_protection(self):

driver=Driver(uc=True)

driver.open("https://www.scrapingcourse.com/antibot-challenge")

driver.uc_gui_click_captcha()

page_html=driver.get_page_source()

print(page_html)

driver.quit()

该脚本使用 UC 模式绕过机器人检测并处理 CAPTCHA 挑战。请注意,虽然 UC 模式有助于规避检测,但它并非万无一失,尤其是在面对高度复杂的反机器人系统时。

代理配置

使用代理可以通过轮换 IP 地址来防止 IP 被封禁。SeleniumBase 允许你配置代理以增强匿名性:

pytest爬虫工具.py-proxy=IP:PORT-proxy-type=http

此命令会设置一个代理服务器,SeleniumBase 会在抓取会话中的所有请求中使用它。

高级技巧和最佳实践

为了让你的网页爬虫更稳健且更不容易被封锁,请遵循以下最佳实践:

  1. 使用随机延迟:在操作之间加入随机休眠间隔,以模拟人类浏览模式。
  2. 轮换 User Agent:更改 user-agent 字符串,以模拟不同设备和浏览器。
  3. 处理 JavaScript 渲染:使用 self.wait_for_element 确保所有动态内容在抓取前加载完成。
  4. 尊重 Robots.txt 文件:始终检查网站的 robots.txt 文件,了解哪些部分允许抓取。

SeleniumBase 的局限性

尽管 SeleniumBase 功能强大,但它也有一些缺点:

  • 无头模式下的检测:有些网站可以检测到无头浏览器。
  • 规模限制:由于速度限制,它不适合跨大量页面抓取大规模数据。
  • 反机器人适应:作为开源工具,反机器人开发者可以更新算法来检测 SeleniumBase。

结论

使用 SeleniumBase 进行网页抓取是一种灵活而强大的数据收集、任务自动化以及与网站交互的方式。我觉得它特别有吸引力,因为它易于使用,并提供了强大的自动化功能,非常适合初学者和经验丰富的开发者。尽管存在一些挑战,例如反机器人检测和扩展方面的限制,但使用 UC 模式和代理设置等智能策略,可以大幅提高成功率。

如果你认真想做网页抓取,学习 SeleniumBase 是必不可少的。随着自动化工具持续发展,能够适应并使用这些框架,是在不断变化的网页抓取世界中保持领先的关键。

感谢阅读,如有任何问题请告诉我!

对其他网页抓取指南感兴趣?

  • 使用 Scrapy 进行网页抓取
  • 使用 Selenium 进行网页抓取
  • 用于网页抓取的 JavaScript 与 Python 对比
  • 使用 Python lxml 进行网页抓取
  • 使用 Excel 进行网页抓取
  • 使用 Python 进行网页抓取
  • 使用 C# 进行网页抓取

想阅读其他精彩文章,请访问我的个人主页 — Data Journal ❤️

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/29 23:17:20

OpenClaw + Hermes + Vibe Coding:从零搭建你的“终极AI科研工作台”——模型部署、Agent编程、论文写作与知识管理全链路实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/29 23:13:22

Modbus RTU通信不稳?从RS485波形、时序到CRC校验的实战排查指南

1. 为什么我要把Modbus RTU的波形、时序和CRC单独拎出来讲搞工业自动化和嵌入式开发的人,对Modbus RTU这三个字肯定不陌生。它简单、开放、生态成熟,几乎每一台PLC、每一块仪表、每一个传感器都愿意支持它。但就是这么一个看起来“没什么技术含量”的协议…

作者头像 李华