lxml.etree.xpathValeror:表达式无效

2024-10-01 13:28:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到了一个我无法理解的Python错误。我已将代码简化到最低限度:

response = requests.get('http://pycoders.com/archive')
tree = html.fromstring(response.text)
r = tree.xpath('//divass="campaign"]/a/@href')
print(r)

但还是有错误

^{pr2}$

有人知道问题是从哪里来的吗?可能是依赖关系问题吗?谢谢。在


Tags: 代码textcomtreehttpgetresponsehtml
2条回答

表达式'//divass="campaign"]/a/@href'在语法上不正确,没有多大意义。而是要检查class属性:

//div[@class="campaign"]/a/@href

现在,这将有助于避免无效表达式错误,但是表达式将找不到任何内容。这是因为requests接收的响应中没有数据。您需要模拟浏览器的操作来获取所需的数据,并发出附加请求以获取包含活动的javascript文件。在

以下是对我有效的方法:

^{pr2}$

印刷品:

['http://us4.campaign-archive2.com/?u=9735795484d2e4c204da82a29&id=3384ab2140', 
 ...
 'http://us4.campaign-archive2.com/?u=9735795484d2e4c204da82a29&id=8b91cb0481'
]

你做xpath是错的。 如果你想获取所有的href,你的xpath应该是

hrefs = tree.xpath('//div[@class="campaign"]/a')
for href in hrefs:
    print(href.get('href'))

或者在一行中:

^{pr2}$

相关问题 更多 >