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

Rajinder Singh
Deep Learning Researcher
14-Nov-2024

您可能想知道如何使用 BotRight 解决验证码,如何使用它来制作一个简单的爬虫,甚至更好的,一个高级爬虫!
好吧,那么这就是您的教程!
Botright 简介
BotRight 是一个用于网页自动化的 Python 库,专门设计用于应对网站上日益复杂的机器人检测系统。与基本的自动化工具不同,BotRight 不仅限于简单的交互,它提供细致的控制,使自动浏览看起来高度人性化。这种对人类行为模拟的强调对于访问通常会阻止或限制机器人的网站至关重要。
BotRight 建立在 Selenium WebDriver 之上,提供一个高级 API,将复杂的浏览器交互抽象成简单的命令,使初学者和高级用户都能开发出复杂的爬虫和自动化脚本,而无需管理低级浏览器命令。这使得它成为从简单数据收集到需要抵抗机器人检测算法的复杂多步骤网页任务的各种项目的绝佳选择。
为什么选择 BotRight?
BotRight 提供了几个使其在自动化领域中脱颖而出的功能:
-
人性化的交互: BotRight 的设计以模拟真实用户行为为中心,例如平滑的鼠标移动、自然的打字模式和时间延迟。这些行为降低了检测风险,并提供了更可靠的访问通常仅限于真实用户的內容。
-
浏览器状态持久性: 通过支持浏览器配置文件,BotRight 允许您在多个自动化运行中维护会话状态。此功能对于需要登录持久性的任务或必须保留特定 Cookie 和缓存状态的任务尤其有用。
-
易于使用: 尽管功能强大,但 BotRight 的易用性令人惊讶。它的 API 结构简化了复杂的自动化任务,消除了与 Selenium 设置通常相关的许多技术开销。初学者可以快速上手,而专家则可以利用 BotRight 的灵活性构建高度定制的解决方案。
-
复杂工作流的可扩展性: BotRight 很好地适应了更高级的任务,包括处理 AJAX 驱动的站点、管理分页数据提取、解决验证码等等。与 CapSolver 等验证码求解器配对,BotRight 可以处理需要绕过验证码的工作流,让您即使面对高度防护的网站也能进行自动化。
-
集成的扩展和插件: BotRight 支持包含各种扩展和插件来增强自动化功能。例如,在 BotRight 中使用 CapSolver 等工具可以帮助管理验证码挑战,为抓取或自动化解锁更多网站。
设置 Botright
在开始之前,请确保您的系统上已安装 Python 3.7 或更高版本。按照以下步骤设置 Botright:
-
安装 Botright:
bashpip install botright
-
安装 WebDriver Manager:
Botright 依赖于
webdriver_manager
包来管理浏览器驱动程序。bashpip install webdriver-manager
-
验证安装:
创建一个新的 Python 文件并导入 Botright 以确保它已正确安装。
pythonfrom botright import Botright
如果没有任何错误,则 Botright 已正确安装。
创建基本爬虫
让我们使用 Botright 创建简单的脚本从 quotes.toscrape.com 抓取数据。
抓取引文
脚本: scrape_quotes.py
python
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
python scrape_quotes.py
输出:
“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
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
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
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 扩展
-
下载扩展:
- 访问 CapSolver GitHub Releases 页面。
- 下载最新版本,例如
capsolver-chrome-extension-v0.2.3.zip
。 - 将其解压缩到项目根目录下的目录中,例如
./capsolver_extension
。
配置 CapSolver 扩展
-
定位
config.json
:- 路径:
capsolver_extension/assets/config.json
- 路径:
-
编辑
config.json
:json{ "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
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
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
可以自定义驱动程序。
- Botright 在内部管理 WebDriver;传递
- 合规性:
- 确保您遵守您正在抓取的网站的服务条款。
运行脚本:
bash
python scrape_with_capsolver_extension.py
附加代码
在 CapSolver 获取顶尖验证码解决方案的奖励代码:scrape。兑换后,每次充值后您将获得额外的 5% 奖励,无限次。

结论
通过使用 CapSolver 浏览器扩展 将 CapSolver 集成到 Botright 中,您可以在网页抓取项目中自动化验证码解决。这确保了不间断的数据提取,即使从受验证码保护的站点也是如此。
关键要点:
- Botright 通过人性化的交互简化了网页自动化。
- CapSolver 浏览器扩展 可以集成到 Botright 脚本中。
- 正确配置扩展和浏览器选项至关重要。
合规声明: 本博客提供的信息仅供参考。CapSolver 致力于遵守所有适用的法律和法规。严禁以非法、欺诈或滥用活动使用 CapSolver 网络,任何此类行为将受到调查。我们的验证码解决方案在确保 100% 合规的同时,帮助解决公共数据爬取过程中的验证码难题。我们鼓励负责任地使用我们的服务。如需更多信息,请访问我们的服务条款和隐私政策。
更多

网络爬取合法吗?2025年全面指南
2025年网络爬虫的法律挑战:关键法规、合规性和案例研究

Ethan Collins
24-Jan-2025

2025年五大reCAPTCHA识别验证码解决方案
探索2025年五大验证码解决方案,包括用于快速识别reCAPTCHA的AI驱动型CapSolver。在此处比较速度、价格和准确性

Emma Foster
23-Jan-2025

什么是reCAPTCHA识别?初学者指南
还在为reCAPTCHA图片网格难题苦恼吗?了解Capsolver的AI驱动识别如何即时解决“选择所有”挑战。学习API集成、浏览器扩展和专业技巧,以95%以上的准确率自动化解决CAPTCHA。

Aloísio Vítor
23-Jan-2025

什么是 reCAPTCHA 站点密钥以及如何找到它?
学习如何手动或使用Capsolver等工具查找reCAPTCHA站点密钥。修复常见问题并为开发者和网络抓取自动化解决CAPTCHA。

Adélia Cruz
23-Jan-2025

2025年如何绕过Cloudflare反爬虫挑战
学习如何在2025年绕过Cloudflare反爬虫验证和Turnstile验证码,实现无缝网页抓取。探索Capsolver集成、TLS指纹识别技巧以及常见错误的修复方法,避免验证码困扰。节省时间,扩展您的数据提取规模。

Emma Foster
23-Jan-2025

2025年网页抓取中如何解决图片验证码:完整指南
2025年使用CapSolver高效解决图片验证码

Lucas Mitchell
23-Jan-2025