为什么我只看到一个div元素被返回?

时间:2017-03-01 00:23:07

标签: python lxml

说,我转到此页

https://www.reddit.com/r/starcraft/

保存,源代码。然后按以下方式使用lxml

tree = etree.parse('redditsample.html', parser=etree.HTMLParser());
tree.xpath('//div')

这就是我得到的:

[<Element div at 0x7f185ac9f908>]

为什么我只获得一个元素?如果查看源代码,他会看到有更多div元素可用。为什么他们没有解析?

感谢。

1 个答案:

答案 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