2016-07-05 64 views
0

我正在編寫一些JavaScript以從第三方網站提取數據。我需要提取數據的格式爲這樣:當數據沒有選擇器時,如何從網頁提取數據?

<!-- a bunch of extra stuff before this --> 
<tr> 
    <td>Keyword: </td> 
    <td> 
     Value 
     <a>...</a> 
     Other stuff I don't care about 
    </td> 
</tr> 
<!-- a bunch of extra stuff after this --> 

我希望做的是在DOM中搜索「關鍵詞:」,然後從下一個TD搶「值」。

+0

也許你需要使用'xpath'? – CJ7

+1

check [demo](https://jsfiddle.net/5mzxyogn/) – guradio

+0

xpath可能類似於:'(// tr [td [。='關鍵字:']]/td)[2]/text() ' – CJ7

回答

0

jQuery的:contains()選擇會做到這一點。

爲您具體的例子:

$("td:contains('Keyword: ')").next().contents()[0].val(); 

首先找到包含 「關鍵詞:」。然後它找到下一個元素,然後將其分割成一個部分數組,然後選擇該數組中的第一個元素,然後獲取該元素的值。

+0

這返回了一個很難處理的jQuery對象。基於此,我可以在正則表達式上標記以提取「Value」:'$(「td:contains('Keyword:')」)。next()。html()。match(/^\ s *(\ w +)/)[1]' –

+0

我在那裏犯了一個錯誤。如果你在末尾加了一個'.val()',它就會得到正確的值。我已更新我的帖子。 –

0

你可以使用jQuery來做到這一點。您將不得不使用contains選擇器和siblings API來實現相同。

您可以閱讀更多關於containshere

您可以閱讀更多關於siblingshere

alert($("td:contains('Key')").siblings().html());

例如,當有多個兄弟姐妹爲:

的時候,只有一個兄弟例

$("td:contains('Key')").siblings().each(function(){ alert($(this).html()); });