使用xpath提取hreflang URL

时间:2017-03-06 11:14:10

标签: xpath web-scraping

我真的在与xPath挣扎。我已经阅读了几本指南,但我似乎无法做到这一点。

基本上,我想提取包含URLs的所有"/ro_ro/"

<link rel="alternate" href="https://www.stackoverflow.com/pl_pl/" hreflang="pl-PL"> 
<link rel="alternate" href="https://www.stackoverflow.com/pt_br/" hreflang="pt-BR"> 
<link rel="alternate" href="https://www.stackoverflow.com/pt_pt/" hreflang="pt-PT"> 
<link rel="alternate" href="https://www.stackoverflow.com/ro_ro/" hreflang="ro-RO"> 
<link rel="alternate" href="https://www.stackoverflow.com/fi_fi/" hreflang="fi-FI">

理想情况下,xpath查询会返回:https://www.stackoverflow.com/ro_ro/

我已经接近了,但页面上有多个链接指向相同的URL,但从未使用hreflang属性。

我要大规模地执行此操作,我应该注意,这意味着我要提取的深页网址将如下所示:https://www.stackoverflow.com/ro_ro/xpath-help-for-a-noob/

编辑:有什么想法为什么会这么做?

3 个答案:

答案 0 :(得分:1)

您可以使用以下公式

在Google电子表格中获取hreflang
=importxml("https://example.org" ,"//link[@hreflang]/@href")

答案 1 :(得分:0)

XPath下面尝试从包含href属性的link元素中获取所需的hreflang

//link[@hreflang and contains(@href, 'ro_ro')]/@href

答案 2 :(得分:-1)

您应该可以使用语句

获取这些网址
descendant::link[contains(@href, 'ro_ro')]

将文档的基节点作为当前节点

后代轴告诉xpath查看所有子节点。 :: link表示只选择名称为链接的节点,方括号内的表达式表示&#34;只选择那些href属性包含&#39; ro_ro&#39; -

的节点