说,我转到此页
https://www.reddit.com/r/starcraft/
保存,源代码。然后按以下方式使用lxml
:
tree = etree.parse('redditsample.html', parser=etree.HTMLParser());
tree.xpath('//div')
这就是我得到的:
[<Element div at 0x7f185ac9f908>]
为什么我只获得一个元素?如果查看源代码,他会看到有更多div元素可用。为什么他们没有解析?
感谢。
答案 0 :(得分:1)
检查您保存的redditsample.html
文件是否与https://www.reddit.com/r/starcraft/
reddit强制执行速率限制,因此如果你多次运行你的脚本,你可能会这样做。在这种情况下,您保存的redditsample.html
文件可能只包含一条reddit消息,说明您已达到其速率限制,您需要稍后再次尝试使用该请求。
在没有达到任何速率限制的情况下请求该URL,.xpath('//div')
结果为429个节点:
>>> len(etree.fromstring(requests.get('https://www.reddit.com/r/starcraft/')
.content, parser=etree.HTMLParser()).xpath('//div'))
429