requests-html
是一个 Python 库,它基于 requests
和 lxml
,用于解析 HTML 文档并与之交互。它由 Kenneth Reitz(也是 requests
库的作者)开发,提供了额外的功能,如 JavaScript 支持、异步操作等。
requests-html
的架构主要基于以下几部分:
requests
的 Session
对象,用于跨请求保持某些参数,如 cookies。下面是一个使用 requests-html
的真实示例,我们将爬取一个真实的网页,并提取一些信息。
from requests_html import HTMLSession
# 创建一个 HTMLSession 对象
session = HTMLSession()
# 目标网页 URL
url = 'https://www.example.com' # 请替换为实际的目标网页 URL
# 发送一个 GET 请求
response = session.get(url)
# 检查响应状态码
if response.status_code == 200:
print('成功获取内容')
else:
print('请求失败,状态码:', response.status_code)
# 解析 HTML 文档
html = response.html
# 查找元素并提取文本
title = html.find('title', first=True).text
print('页面标题:', title)
# 提取所有段落文本
paragraphs = html.find('p')
for paragraph in paragraphs:
print(paragraph.text)
# 执行 JavaScript(如果需要)
# response.html.render()
# 关闭会话
session.close()
在这个例子中,我们首先创建了一个 HTMLSession
对象,然后发送了一个 GET 请求到 https://www.example.com
。接着,我们解析了 HTML 文档,并使用 find
方法查找了
元素和所有 元素,并打印了它们的文本内容。
请注意,由于 https://www.example.com
是一个示例域名,实际使用时需要替换为真实的网页 URL。此外,如果目标网页需要 JavaScript 执行才能显示内容,可以使用 response.html.render()
方法来执行 JavaScript。
希望这个解释和示例能帮助你更好地理解 requests-html
库的架构和用法。