[英]XPath Query: get attribute href from a tag
我想使用 XPath 从a
-tag 获取href
属性,但它在同一个文件中出现了两次。 我相处得怎么样? 我需要检查是否有一个值为 $street/object 的href
属性,我有这个代码但它不起作用:
$product_photo = $xpath->query("//a[contains(@href,'{$object_street}fotos/')][1]");
$product_360 = $xpath->query("//a[contains(@href,'{$object_street}360-fotos/')][1]");
$product_blueprint = $xpath->query("//a[contains(@href,'{$object_street}plattegrond/')][1]");
$product_video = $xpath->query("//a[contains(@href,'{$object_street}video/')][1]");
它根本不返回任何东西。 谁能帮帮我?
对于以下 HTML 文档:
<html>
<body>
<a href="http://www.example.com">Example</a>
<a href="http://www.stackoverflow.com">SO</a>
</body>
</html>
xpath 查询/html/body//a/@href
(或简单地//a/@href
)将返回:
http://www.example.com http://www.stackoverflow.com
要选择特定实例,请使用/html/body//a[N]/@href
,
$ /html/body//a[2]/@href http://www.stackoverflow.com
要测试属性中包含的字符串并返回属性本身,请检查标签而不是属性:
$ /html/body//a[contains(@href,'example')]/@href http://www.example.com
两者混合:
$ /html/body//a[contains(@href,'com')][2]/@href http://www.stackoverflow.com
@mockinterface 分享的答案是正确的。 虽然我想加上我的 2 美分。
如果有人使用像scrapy
的框架,你将不得不像这样使用/html/body//a[contains(@href,'com')][2]/@href
和 get() :
response.xpath('//a[contains(@href,'com')][2]/@href').get()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.