2012-07-27 38 views
1

我使用這個XPath來獲取文本()後面的mailto:XPath表達式不能提取的mailto:屬性

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

現在我希望能夠提取什麼來mailto:爲這樣的屬性:

<a href="mailto:[email protected]?subject=hello">here</a> 

我想:[email protected]?subject=hello

XPath的什麼我應該用得到的字符串Ĵ ust後的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 for javascript。

+0

爲什麼你就不能得到的那部分你整個HREF後,剛剛參加站長後,從字符串 – iblazevic 2012-07-27 07:48:00

+0

第一個問題是:你如何獲得屬性的*值*?我不知道,所以我刪除了我的錯誤答案。 – 2012-07-27 08:01:01

+0

看到我的編輯上面 – DjangoPy 2012-07-27 08:09:29

回答

0

考慮下面的示例XML,爲後mailto:

<?xml version="1.0" encoding="UTF-8"?> 
<div> 
    <a href="mailto:[email protected]?subject=hello">here</a> 
</div> 

獲取字符串,你可以使用下面的XPath表達式

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

返回[email protected]?subject=hello

在你的情況的XPath看起來像:

substring-after(//a[starts-with(@href, 'mailto')]/@href,'mailto:') 
+0

這有竅門,你知道如何擺脫?以及之後會發生什麼 - 只是爲了獲得沒有主題的簡單電子郵件(如果有的話) – DjangoPy 2012-07-27 15:43:07

+0

這隻返回第一個結果,我需要獲得所有結果。 – DjangoPy 2012-07-27 16:10:35

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

UPDATE

//a[starts-with(@href, 'mailto')]/substring-after(normalize-space(./@href),'mailto:') 
+0

是否有可能使用xpath在一行中實現這一點? – DjangoPy 2012-07-27 09:15:45

+0

@ user1537701:查看我的更新。 – Cylian 2012-07-27 09:24:29

+0

這不起作用。 無效的XPath:// a [starts-with(@href,'mailto')]/substring-after(normalize-space(./@href),'mailto:') – DjangoPy 2012-07-27 09:52:09