Python中如何使用requests作者的新项目requests-html
https://github.com/kennethreitz/requests-html
This library intends to make parsing HTML (e.g. scraping the web) as simple and intuitive as possible.
When using this library you automatically get:
-Full JavaScript support!
-CSS Selectors (a.k.a jQuery-style, thanks to PyQuery).
-XPath Selectors, for the faint at heart.
-Mocked user-agent (like a real web browser).
-Automatic following of redirects.
-Connection – pooling and cookie persistence.
-The Requests experience you know and love, with magical parsing abilities.
对 requests 做了封装,添加了解析 html 的接口,总代码现在是 399 行,还在更新
Python中如何使用requests作者的新项目requests-html
mark 先 star 为敬
requests-html是requests作者Kenneth Reitz开发的库,它基于requests并集成了HTML解析功能(使用pyquery),主要特点是内置了JavaScript支持(通过Pyppeteer)和更简洁的API。
基本用法示例:
from requests_html import HTMLSession
# 创建会话
session = HTMLSession()
# 发送请求并渲染JavaScript(如果需要)
r = session.get('https://example.com')
r.html.render() # 这会启动无头浏览器执行JS
# 使用CSS选择器查找元素
links = r.html.find('a')
for link in links:
print(link.text, link.attrs.get('href'))
# 搜索包含特定文本的元素
about_element = r.html.search('About {}')[0]
# 获取所有链接
all_links = r.html.absolute_links
关键特性:
- JavaScript渲染:
render()方法可以执行页面中的JavaScript代码 - CSS选择器:使用类似jQuery的语法查找元素
- 数据提取:内置的
search()方法支持类似正则表达式的文本搜索 - 异步支持:可以使用
AsyncHTMLSession进行异步请求
简单爬虫示例:
from requests_html import HTMLSession
session = HTMLSession()
r = session.get('https://news.ycombinator.com')
r.html.render(sleep=2) # 等待2秒让JS执行
articles = []
for item in r.html.find('.athing'):
title = item.find('.titleline')[0].text
link = item.find('.titleline a')[0].attrs['href']
articles.append({'title': title, 'link': link})
print(f"抓取了 {len(articles)} 篇文章")
注意:首次使用render()时会自动下载Chromium,这可能需要一些时间。
总结:requests-html适合需要处理JavaScript渲染页面的简单爬虫任务。
把 pyquery 和 xpath 弄进来了,还有自动 useragent,是要一统江湖的节奏
观望中,先 star
orz
star 为敬,beautifulsoup 用着还是不够爽
今天看了一下,原来是新项目,很有希望啊
吊炸天
这个作者好腻害,好多牛逼项目
看作者就 star 系列
可以放弃 bs4 了?
期待有人封装 aiohttp
如果下载和解析分开异步进行就好了
mark
Mark
不太明白,这个 库 用来替代谁的?
请问这个库 是 requests+bs4 吗
xxx for humans 又来了?没有 xxx 之前莫不是大家都在吃猪食 ?
大约看了下 大概类似于 requests+bs4+selenium/phantomjs 不过后面两个现在只是封装了一小部分功能 比如通过 css selector 解析或者执行 js 代码这种
你可以自己异步啊 比如用队列什么的
Only later versions of Python 3 are supported. 好评
都是实用的功能啊!
还可以解析 JS ?怎么感觉是个爬虫库了
https://github.com/scrapy/parsel 一直用的这货,re css xpath 用起来很爽
非程序猿表示非常感兴趣。requests 太好用了,太是适合我等毫无基础的小白了,轻松上手。
看了下,安装 requests-html 同时需要 bs4,lxml 等库,估计还是依赖于这些库
恕我直言,没看懂这个库存在的意义,lxml 足够好用了,重点是 xpath 这种东西应该存在配置里,而不是把解析逻辑写在代码里
Full JavaScript Support by Chromium headless mode.
the first time you ever run the render() method, it will download Chromium …
399 行代码已经 4600 stars 了。
—
另外作者现在摄影技术也逆天。
看依赖需要 bs4
但代码中又没有出现?
这个应该是之前用了 bs4,后来又改用其他的,但是依赖里面没有去掉,因为昨天我看的时候代码才 200 行
像是拯救世界
文档好多错误,跑不起来
for the horde
顶 k 神下
研究中。文档确实错误挺多
Tutorial 第一行代码 from requests_html import HTMLSession 就报错,应该 import Session
明显是爬虫嘛……
感谢作者,正需求这样的库!
import HTMLSession 报错的原因是因为它会自动加载 fake_useragents.json,你的网络可能不能访问 cloudfront。
认真读一秒报错提示吧。
谢谢,我还在研究。不过报错提示我实在没看出啥…
版本更新太快,所以用的时候要注意安装的版本和 Github 上的代码 commit 时间。
我想问下这个库可以将<script>标签里面的 js 代码快速转换成 python 对象吗?有什么办法吗?正好遇到这个问题。
现在只能换成字符串强行切
目前已经 700 行代码,7700+ star,有没有人用过,感觉如何?


