2016-07-05 3 views
0

サードパーティのウェブサイトからデータを抽出するためのJavaScriptをいくつか作成しています。私は抽出するために必要なデータは、次のようなフォーマットされて:「キーワード:」とし、次のTDから「価値」をつかむデータにセレクタがない場合、ウェブページからデータを抽出するにはどうすればよいですか?

<!-- 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を検索しています。

+0

多分あなたは 'xpath'を使う必要がありますか? – CJ7

+1

チェック[デモ](https://jsfiddle.net/5mzxyogn/) – guradio

+0

XPathはのようなものかもしれません:([。のTD [= 'キーワード:']] // TR/TD) '[2] /テキスト() ' – 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()); });

関連する問題