1

我正在使用这个 XPath 来获取 mailto 之后的 text():

//a[starts-with(@href, 'mailto')]/text()

现在我希望能够提取此类属性之后的内容: mailto:

<a href="mailto:info@info.com?subject=hello">here</a>

我想得到:info@info.com?subject=hello

我应该使用什么 XPath 在 mailto: 之后获取字符串?

编辑:似乎 mailto: 是使用 javascript 生成的。scrapy可以处理这样的事情吗?

    <script type="text/javascript">
 <!--
 var prefix = '&#109;a' + 'i&#108;' + '&#116;o';
 var path = 'hr' + 'ef' + '=';
 var addy54802 = '&#105;nf&#111;' + '&#64;';
 addy54802 = addy54802 + 'zl&#97;ng&#111;' + '&#46;' + 'c&#111;m?s&#117;bj&#101;ct=C&#97;r&#101;&#101;r%20&#97;t%20Zl&#97;ng&#111;';
 var addy_text54802 = 'here';
 document.write('<a ' + path + '\'' + prefix + ':' + addy54802 + '\'>');
 document.write(addy_text54802);
 document.write('<\/a>');
 //-->\n </script>

解决方案:我认为我应该将 Selenium 用于 javascript。

4

2 回答 2

0
for $a in //a[starts-with(@href, 'mailto')]
    return substring-after(normalize-space($a/@href),'mailto:')

更新

//a[starts-with(@href, 'mailto')]/substring-after(normalize-space(./@href),'mailto:')
于 2012-07-27T07:51:02.953 回答
0

考虑下面的示例 XML,用于在之后获取字符串mailto:

<?xml version="1.0" encoding="UTF-8"?>
<div>
    <a href="mailto:info@info.com?subject=hello">here</a>
</div>

您可以使用下面的 xpath 表达式

substring-after(/div/a/@href,'mailto:')

它返回info@info.com?subject=hello

在您的情况下,xpath 将如下所示:

substring-after(//a[starts-with(@href, 'mailto')]/@href,'mailto:')
于 2012-07-27T14:06:29.217 回答