requests-html零基础到精通:API完全指南
你还在为复杂的HTML解析代码头疼吗?requests-html让Python解析网页变得简单!本文将带你掌握所有核心API,从基础安装到高级JavaScript渲染,轻松提取网页数据。读完本文,你将能够:快速上手requests-html、熟练使用CSS和XPath选择器、处理动态加载内容、掌握异步请求技巧。
项目简介
requests-html是一个为人类设计的Pythonic HTML解析库,提供了直观的API和强大的功能,包括完整的JavaScript支持、CSS和XPath选择器、自动跟随重定向等。项目详细信息可参考README.rst。
快速安装
使用pipenv可以轻松安装requests-html:
$ pipenv install requests-html
✨🍰✨
安装文件配置可查看Pipfile和setup.py。目前仅支持Python 3.6及以上版本。
核心API详解
HTMLSession和AsyncHTMLSession
requests-html提供了同步和异步两种会话方式,分别通过HTMLSession和AsyncHTMLSession实现。核心实现代码位于requests_html.py。
# 同步请求
from requests_html import HTMLSession
session = HTMLSession()
r = session.get('https://python.org/')
# 异步请求
from requests_html import AsyncHTMLSession
asession = AsyncHTMLSession()
async def get_pythonorg():
r = await asession.get('https://python.org/')
return r
results = asession.run(get_pythonorg)
查找元素
requests-html支持CSS选择器和XPath两种方式查找元素,通过find()和xpath()方法实现。
# CSS选择器
about = r.html.find('#about', first=True)
# XPath选择器
elements = r.html.xpath('/html/body/div[1]/a')
提取链接
通过links和absolute_links属性可以轻松提取页面中的链接:
# 相对链接
r.html.links
# 绝对链接
r.html.absolute_links
实战示例
基本使用
以下示例展示了如何使用requests-html提取Python官网的链接:
from requests_html import HTMLSession
session = HTMLSession()
r = session.get('https://python.org/')
# 获取所有链接
all_links = r.html.absolute_links
print(all_links)
测试用例可参考tests/test_requests_html.py,示例HTML文件可查看tests/python.html。
JavaScript渲染
对于动态加载的内容,requests-html提供了render()和arender()方法,通过Chromium浏览器渲染页面:
# 同步渲染
r = session.get('https://pythonclock.org')
r.html.render()
# 异步渲染
async def get_pyclock():
r = await asession.get('https://pythonclock.org/')
await r.html.arender()
return r
高级功能
分页处理
requests-html提供了next()方法,可以自动识别并获取下一页内容:
# 获取下一页URL
next_url = r.html.next()
# 直接获取下一页内容
next_page = r.html.next(fetch=True)
自定义JavaScript执行
通过render()方法的script参数可以在页面加载时执行自定义JavaScript:
script = """
() => {
return {
width: document.documentElement.clientWidth,
height: document.documentElement.clientHeight
}
}
"""
result = r.html.render(script=script)
官方文档与资源
更多详细内容可参考官方文档docs/source/index.rst。测试用例和示例代码可在tests/目录中找到。项目构建配置可查看Makefile。
通过本文的介绍,相信你已经掌握了requests-html的核心功能。无论是简单的网页数据提取还是复杂的动态内容处理,requests-html都能让你的工作变得更加高效和简单。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考




