1

mailto に続く text() を取得するために、この XPath を使用しています。

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

今、私はそのような属性の に来るものを抽出できるようにしたい:mailto:

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

私は手に入れたい:info@info.com?subject=hello

mailto: の直後の文字列を取得するには、どの XPath を使用すればよいですか?

編集: mailto: は JavaScript を使用して生成されているようです。スクレイピーはそのようなことを処理できますか?

    <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>

解決策: javascript には Selenium を使用する必要があると思います。

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 に答える