如何使用 Hrequests 进行网页抓取

Lucas Mitchell
Automation Engineer
04-Sep-2024
如何使用 Hrequests 进行网页抓取

网页抓取是提取网站信息的一种强大方法,但当网站实施验证码、速率限制或代理来阻止不需要的抓取器时,这通常是一个挑战。在本指南中,我们将介绍 hrequests,一个高性能的网页抓取库,并引导您完成其基本用法,包括使用 hrequests 与 Capsolver 相结合来抓取网站的演示,以 绕过 ReCaptcha 挑战。
什么是 hrequests?
hrequests 是一个现代的 Python HTTP 库,专为速度和灵活性而构建,旨在处理繁重的网页抓取任务。它本质上是 requests 的增强版本,更加注重处理请求并提供更多控制,尤其是在需要额外代理或验证码处理的环境中。
该库提供了以下几个功能:
- Asyncio 支持 用于进行并发请求。
- 会话处理 以有效地重用连接。
- 代理支持 用于处理代理后面的请求。
- 速率限制 支持避免被封锁。
- 验证码解决 支持通过外部服务。
先决条件
在深入使用 hrequests 之前,请确保您已安装以下内容:
bash
pip install hrequests capsolver
如果您要抓取的网站需要验证码,请确保您也有一个 Capsolver API 密钥用于解决验证码。有关详细的设置说明,请访问 hrequests GitHub 页面。
hrequests 入门
以下是如何使用 hrequests 抓取网页的基本示例:
python
import hrequests
# 我们要抓取的网页的 URL
url = 'https://example.com'
# 发出简单的 GET 请求
response = hrequests.get(url)
# 打印状态码
```python
print(f"状态码: {response.status_code}")
# 打印页面的内容
print(f"页面内容: {response.text}")
这个基本的脚本向给定的 URL 发出 GET 请求,并打印状态码和页面内容。然而,许多网站更加复杂,需要额外的处理,例如代理轮换、用户代理欺骗或验证码解决。
使用 Capsolver 和 hrequests 处理验证码
在本节中,我们将探讨如何将 Capsolver 与 hrequests 集成以绕过验证码。Capsolver 是一项外部服务,可帮助解决各种类型的验证码,包括 ReCaptcha V2,它常用于网站。
我们将演示使用 Capsolver 解决 ReCaptcha V2,然后抓取需要先解决验证码的页面的内容。
示例:使用 Capsolver 解决 ReCaptcha V2
python
import capsolver
import hrequests
import os
# 考虑使用环境变量保存敏感信息
PROXY = os.getenv("PROXY", "http://username:password@host:port")
capsolver.api_key = os.getenv("CAPSOLVER_API_KEY", "Your Capsolver API Key")
PAGE_URL = os.getenv("PAGE_URL", "PAGE_URL")
PAGE_KEY = os.getenv("PAGE_SITE_KEY", "PAGE_SITE_KEY")
def solve_recaptcha_v2(url, key):
solution = capsolver.solve({
"type": "ReCaptchaV2Task",
"websiteURL": url,
"websiteKey": key,
"proxy": PROXY
})
return solution['solution']['gRecaptchaResponse']
def main():
print("正在解决 reCaptcha v2")
solution = solve_recaptcha_v2(PAGE_URL, PAGE_KEY)
print("解决方案: ", solution)
# 现在我们已经解决了验证码,我们可以继续抓取
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
}
# 发送带有验证码解决方案的 GET 请求
response = hrequests.get(
PAGE_URL,
headers=headers,
data={"g-recaptcha-response": solution},
python
proxies = {"http": PROXY, "https": PROXY}
)
# 检查状态并打印页面内容
if response.status_code == 200:
print("成功获取页面!")
print(response.text)
else:
print(f"获取页面失败。状态码:{response.status_code}")
if __name__ == "__main__":
main()
随意扩展此脚本以满足您的抓取需求,并尝试 hrequests 提供的其他功能。始终确保您的抓取活动遵守网站服务条款和法律指南。
祝抓取愉快!
合规声明: 本博客提供的信息仅供参考。CapSolver 致力于遵守所有适用的法律和法规。严禁以非法、欺诈或滥用活动使用 CapSolver 网络,任何此类行为将受到调查。我们的验证码解决方案在确保 100% 合规的同时,帮助解决公共数据爬取过程中的验证码难题。我们鼓励负责任地使用我们的服务。如需更多信息,请访问我们的服务条款和隐私政策。
更多

基于大模型的人工智能验证码:为什么它更适合企业场景
AI视觉模型如何重塑CAPTCHA识别,以及企业级求解器为何需要数据、规模和定制训练。

Ethan Collins
13-Mar-2026

WebMCP 与 MCP:对AI代理有什么区别?
探索WebMCP与MCP在AI代理中的关键差异,了解它们在网页自动化和结构化数据交互中的作用。学习这些协议如何塑造AI代理能力的未来。

Lucas Mitchell
13-Mar-2026

开OpenClaw 对比 Nanobot:选择你的AI代理用于自动化
比较 OpenClaw 和 Nanobot,两个领先的 AI 代理框架,以实现高效自动化。了解它们的功能、性能以及 CapSolver 如何增强其能力。

Ethan Collins
11-Mar-2026

如何使用 CapSolver 和 n8n 解决 Cloudflare Turnstile
使用CapSolver和n8n构建一个Cloudflare Turnstile求解API。学习如何自动化解决令牌,将其提交到网站,并无需编码即可提取受保护的数据。

Adélia Cruz
10-Mar-2026

如何在OpenClaw中解决验证码 – 使用CapSolver扩展的逐步指南
学习如何使用CapSolver Chrome扩展程序在OpenClaw中解决CAPTCHA以实现无缝AI浏览器自动化。

Anh Tuan
06-Mar-2026

面向开发者的浏览器自动化:2026年掌握Selenium与验证码
通过这份2026年指南,掌握浏览器自动化开发。学习Selenium WebDriver Java、Actions接口以及如何使用CapSolver解决验证码。

Sora Fujimoto
02-Mar-2026

