产品集成资源文档定价
立即开始

© 2026 CapSolver. All rights reserved.

联系我们

Slack: lola@capsolver.com

产品

  • reCAPTCHA v2
  • reCAPTCHA v3
  • Cloudflare Turnstile
  • Cloudflare Challenge
  • AWS WAF
  • 浏览器插件
  • 更多验证码类型

集成

  • Selenium
  • Playwright
  • Puppeteer
  • n8n
  • 合作伙伴
  • 查看所有集成

资源

  • 推荐返佣系统
  • 官方文档
  • API 参考
  • 博客
  • 常见问题 (FAQ)
  • 术语表
  • 系统状态

法律声明

  • 服务条款
  • 隐私政策
  • 退款政策
  • 请勿出售我的信息
博客/All/2025 年使用 Botright 和 Python 进行网页抓取
Nov13, 2024

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

Rajinder Singh

Rajinder Singh

Deep Learning Researcher

您可能想知道如何使用 BotRight 解决验证码,如何使用它来制作一个简单的爬虫,甚至更好的,一个高级爬虫!
好吧,那么这就是您的教程!

Botright 简介

BotRight 是一个用于网页自动化的 Python 库,专门设计用于应对网站上日益复杂的机器人检测系统。与基本的自动化工具不同,BotRight 不仅限于简单的交互,它提供细致的控制,使自动浏览看起来高度人性化。这种对人类行为模拟的强调对于访问通常会阻止或限制机器人的网站至关重要。

BotRight 建立在 Selenium WebDriver 之上,提供一个高级 API,将复杂的浏览器交互抽象成简单的命令,使初学者和高级用户都能开发出复杂的爬虫和自动化脚本,而无需管理低级浏览器命令。这使得它成为从简单数据收集到需要抵抗机器人检测算法的复杂多步骤网页任务的各种项目的绝佳选择。

为什么选择 BotRight?

BotRight 提供了几个使其在自动化领域中脱颖而出的功能:

  1. 人性化的交互: BotRight 的设计以模拟真实用户行为为中心,例如平滑的鼠标移动、自然的打字模式和时间延迟。这些行为降低了检测风险,并提供了更可靠的访问通常仅限于真实用户的內容。

  2. 浏览器状态持久性: 通过支持浏览器配置文件,BotRight 允许您在多个自动化运行中维护会话状态。此功能对于需要登录持久性的任务或必须保留特定 Cookie 和缓存状态的任务尤其有用。

  3. 易于使用: 尽管功能强大,但 BotRight 的易用性令人惊讶。它的 API 结构简化了复杂的自动化任务,消除了与 Selenium 设置通常相关的许多技术开销。初学者可以快速上手,而专家则可以利用 BotRight 的灵活性构建高度定制的解决方案。

  4. 复杂工作流的可扩展性: BotRight 很好地适应了更高级的任务,包括处理 AJAX 驱动的站点、管理分页数据提取、解决验证码等等。与 CapSolver 等验证码求解器配对,BotRight 可以处理需要绕过验证码的工作流,让您即使面对高度防护的网站也能进行自动化。

  5. 集成的扩展和插件: BotRight 支持包含各种扩展和插件来增强自动化功能。例如,在 BotRight 中使用 CapSolver 等工具可以帮助管理验证码挑战,为抓取或自动化解锁更多网站。


设置 Botright

在开始之前,请确保您的系统上已安装 Python 3.7 或更高版本。按照以下步骤设置 Botright:

  1. 安装 Botright:

    bash Copy
    pip install botright
  2. 安装 WebDriver Manager:

    Botright 依赖于 webdriver_manager 包来管理浏览器驱动程序。

    bash Copy
    pip install webdriver-manager
  3. 验证安装:

    创建一个新的 Python 文件并导入 Botright 以确保它已正确安装。

    python Copy
    from botright import Botright

    如果没有任何错误,则 Botright 已正确安装。


创建基本爬虫

让我们使用 Botright 创建简单的脚本从 quotes.toscrape.com 抓取数据。

抓取引文

脚本: scrape_quotes.py

python Copy
from botright import Botright

def scrape_quotes():
    with Botright() as bot:
        bot.get("https://quotes.toscrape.com/")
        quotes = bot.find_elements_by_css_selector("div.quote")
        for quote in quotes:
            text = quote.find_element_by_css_selector("span.text").text
            author = quote.find_element_by_css_selector("small.author").text
            print(f"\"{text}\" - {author}")

if __name__ == "__main__":
    scrape_quotes()

运行脚本:

bash Copy
python scrape_quotes.py

输出:

Copy
“The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking.” - Albert Einstein
...

解释:

  • 我们使用 Botright 作为上下文管理器,确保正确设置和拆卸。
  • 我们使用 bot.get() 导航到网站。
  • 我们找到所有引文元素并提取文本和作者。

处理分页

脚本: scrape_quotes_pagination.py

python Copy
from botright import Botright

def scrape_all_quotes():
    with Botright() as bot:
        bot.get("https://quotes.toscrape.com/")
        while True:
            quotes = bot.find_elements_by_css_selector("div.quote")
            for quote in quotes:
                text = quote.find_element_by_css_selector("span.text").text
                author = quote.find_element_by_css_selector("small.author").text
                print(f"\"{text}\" - {author}")

            # 检查是否还有下一页
            next_button = bot.find_elements_by_css_selector('li.next > a')
            if next_button:
                next_button[0].click()
            else:
                break

if __name__ == "__main__":
    scrape_all_quotes()

解释:

  • 我们通过检查 "下一页" 按钮是否可用,循环遍历页面。
  • 我们使用 find_elements_by_css_selector 定位元素。
  • 我们点击 "下一页" 按钮以导航到下一页。

抓取动态内容

脚本: scrape_dynamic_content.py

python Copy
from botright import Botright
import time

def scrape_tags():
    with Botright() as bot:
        bot.get("https://quotes.toscrape.com/")
        # 点击 "Top Ten tags" 链接以动态加载标签
        bot.click('a[href="/tag/"]')
        # 等待动态内容加载
        time.sleep(2)
        tags = bot.find_elements_by_css_selector("span.tag-item > a")
        for tag in tags:
            tag_name = tag.text
            print(f"Tag: {tag_name}")

if __name__ == "__main__":
    scrape_tags()

解释:

  • 我们通过点击链接导航到标签页面。
  • 我们使用 time.sleep() 等待动态内容加载。
  • 我们提取并打印标签。

提交表单和登录

脚本: scrape_with_login.py

python Copy
from botright import Botright

def login_and_scrape():
    with Botright() as bot:
        bot.get("https://quotes.toscrape.com/login")
        # 填写登录表单
        bot.type('input#username', 'testuser')
        bot.type('input#password', 'testpass')
        bot.click("input[type='submit']")

        # 通过检查注销链接来验证登录
        if bot.find_elements_by_css_selector('a[href="/logout"]'):
            print("Logged in successfully!")

            # 现在抓取引文
            bot.get("https://quotes.toscrape.com/")
            quotes = bot.find_elements_by_css_selector("div.quote")
            for quote in quotes:
                text = quote.find_element_by_css_selector("span.text").text
                author = quote.find_element_by_css_selector("small.author").text
                print(f"\"{text}\" - {author}")
        else:
            print("Login failed.")

if __name__ == "__main__":
    login_and_scrape()

解释:

  • 我们导航到登录页面并填写凭据。
  • 我们通过检查注销链接是否存在来验证登录。
  • 然后我们继续抓取对已登录用户可用的內容。

**注意:**由于 quotes.toscrape.com 允许任何用户名和密码进行演示,因此我们可以使用虚拟凭据。


将 CapSolver 集成到 Botright 中

虽然 quotes.toscrape.com 没有验证码,但许多现实世界中的网站都有。为了应对这种情况,我们将演示如何使用 CapSolver 浏览器扩展 将 CapSolver 集成到我们的 Botright 脚本中。

下载 CapSolver 扩展

  1. 下载扩展:

    • 访问 CapSolver GitHub Releases 页面。
    • 下载最新版本,例如 capsolver-chrome-extension-v0.2.3.zip。
    • 将其解压缩到项目根目录下的目录中,例如 ./capsolver_extension。

配置 CapSolver 扩展

  1. 定位 config.json:

    • 路径:capsolver_extension/assets/config.json
  2. 编辑 config.json:

    json Copy
    {
      "apiKey": "YOUR_CAPSOLVER_API_KEY",
      "enabledForcaptcha": true,
      "captchaMode": "token",
      "enabledForRecaptchaV2": true,
      "reCaptchaV2Mode": "token",
      "solveInvisibleRecaptcha": true,
      "verbose": false
    }
    • 将 "YOUR_CAPSOLVER_API_KEY" 替换为您的实际 CapSolver API 密钥。
    • 根据您预期的验证码类型将 enabledForcaptcha 和/或 enabledForRecaptchaV2 设置为 true。
    • 将模式设置为 "token" 以自动解决。

在 Botright 中加载 CapSolver 扩展

要在 Botright 中使用 CapSolver 扩展,我们需要配置浏览器以在启动时加载扩展。

**注意:**Botright 允许您自定义浏览器选项,包括添加扩展。

修改后的脚本:

python Copy
from botright import Botright
from selenium.webdriver.chrome.options import Options
import os

def create_bot_with_capsolver():
    # CapSolver 扩展文件夹的路径
    extension_path = os.path.abspath('capsolver_extension')

    # 配置 Chrome 选项
    options = Options()
    options.add_argument(f"--load-extension={extension_path}")
    options.add_argument("--disable-gpu")
    options.add_argument("--no-sandbox")

    # 使用自定义选项初始化 Botright
    bot = Botright(options=options)
    return bot

解释:

  • 导入 Options:
    • 从 selenium.webdriver.chrome.options 导入,以设置 Chrome 选项。
  • 配置 Chrome 选项:
    • 使用 options.add_argument() 添加 CapSolver 扩展。
  • 使用选项初始化 Botright:
    • 在创建实例时将 options 传递给 Botright。

带有 CapSolver 集成的示例脚本

我们将通过导航到一个具有 reCAPTCHA 的网站(例如 Google 的 reCAPTCHA 演示)来演示集成。

脚本: scrape_with_capsolver_extension.py

python Copy
from botright import Botright
from selenium.webdriver.chrome.options import Options
import os
import time

def solve_captcha_and_scrape():
    # CapSolver 扩展文件夹的路径
    extension_path = os.path.abspath('capsolver_extension')

    # 配置 Chrome 选项
    options = Options()
    options.add_argument(f"--load-extension={extension_path}")
    options.add_argument("--disable-gpu")
    options.add_argument("--no-sandbox")

    # 使用自定义选项初始化 Botright
    with Botright(options=options) as bot:
        bot.get("https://www.google.com/recaptcha/api2/demo")

        # 等待 CapSolver 解决验证码
        print("Waiting for CAPTCHA to be solved...")
        # 根据平均解决时间调整睡眠时间
        time.sleep(15)

        # 通过检查页面内容来验证验证码是否已解决
        if "Verification Success" in bot.page_source:
            print("CAPTCHA solved successfully!")
        else:
            print("CAPTCHA not solved yet or failed.")

if __name__ == "__main__":
    solve_captcha_and_scrape()

解释:

  • 设置 Chrome 选项:
    • 在浏览器会话中包含 CapSolver 扩展。
  • 使用选项初始化 Botright:
    • 在创建 Botright 实例时传递 options。
  • 导航到目标站点:
    • 使用 bot.get() 导航到具有 reCAPTCHA 的站点。
  • 等待验证码解决:
    • CapSolver 扩展将自动解决验证码。
    • 使用 time.sleep() 等待;根据需要调整时间。
  • 验证验证码解决方案:
    • 检查页面内容以确认验证码是否已解决。

重要注意事项:

  • 扩展路径:
    • 确保 extension_path 正确指向您的 CapSolver 扩展文件夹。
  • 等待时间:
    • 解决时间可能会有所不同;相应地调整 time.sleep()。
  • 驱动程序管理:
    • Botright 在内部管理 WebDriver;传递 options 可以自定义驱动程序。
  • 合规性:
    • 确保您遵守您正在抓取的网站的服务条款。

运行脚本:

bash Copy
python scrape_with_capsolver_extension.py

附加代码

在 CapSolver 获取顶尖验证码解决方案的奖励代码:scrape。兑换后,每次充值后您将获得额外的 5% 奖励,无限次。

结论

通过使用 CapSolver 浏览器扩展 将 CapSolver 集成到 Botright 中,您可以在网页抓取项目中自动化验证码解决。这确保了不间断的数据提取,即使从受验证码保护的站点也是如此。

关键要点:

  • Botright 通过人性化的交互简化了网页自动化。
  • CapSolver 浏览器扩展 可以集成到 Botright 脚本中。
  • 正确配置扩展和浏览器选项至关重要。

查看更多

Apr 30, 2026

Cloudflare 错误 1020:访问被拒绝 在网络爬虫 & WAF 防护

了解Cloudflare错误1020访问被拒绝的触发原因,Web应用防火墙和机器人检测的工作原理,以及开发人员如何减少合法自动化工作流程中的误报。

Ethan Collins
Ethan Collins
Apr 29, 2026

AI代理在SEO中:从关键词研究到自动化数据收集

了解AI代理如何在搜索引擎优化中自动化关键词研究、竞争对手分析和数据收集——以及如何使用CapSolver处理流程中的验证码挑战。

Ethan Collins
Ethan Collins

目录

Apr 29, 2026

验证码破解API开发者文档:2026年指南

通过我们面向开发人员的全面API文档,掌握验证码解决技巧。学习如何将CapSolver集成到您的系统中,以处理reCAPTCHA、AWS WAF以及更多内容。

Ethan Collins
Ethan Collins
Apr 29, 2026

Cloudflare 挑战是什么?它是如何工作的及何时出现

了解 Cloudflare 挑战是什么,Cloudflare 如何通过 JavaScript 和机器学习检测机器人,以及在浏览过程中为何会出现挑战。2026 年的完整指南。

Ethan Collins
Ethan Collins