【发布时间】:2015-06-24 12:10:54
【问题描述】:
xpath
//*[h1]
在 python 和 Firebug 上尝试时显示不同的结果。我的代码:
import requests
from lxml import html
url = "http://machinelearningmastery.com/naive-bayes-classifier-scratch-python/"
resp = requests.get(url)
page = html.fromstring(resp.content)
node = page.xpath("//*[h1]")
print node
#[<Element center at 0x7fb42143c7e0>]
但 Firebug 匹配 <header> 标记,这是我想要的。
为什么会这样?如何让我的 python 代码也匹配<header>?
【问题讨论】:
-
您是否要获取所有
h1节点?为什么不简单地使用.//h1?h1被<center>包裹,那么除此之外你还能期待什么? -
@Anzel 我正在尝试获取 包含
h1的节点,而不是h1本身。 -
我在重新阅读您的 xpath 后意识到。但是您的
resp是<center><h1>403 Forbidden</h1></center>... 所以返回<center>节点是正确的 -
哇哦!但是该网址在浏览器中可以正常打开!知道为什么它在
requests中被禁止吗? -
我猜可能是缺少 UserAgent 字符串,或者您可能在浏览器的某个位置登录了会话;)
标签: python-2.7 xpath lxml.html