2016-04-12 13 views
1

具体的なラベルのliの中にあるbの中のテキストを抽出するために必要なXPathは何ですか?ラベル付きテキスト値のXPath?

例コード:

<li>Job category:<b>Engineering</b></li> 
<li>Job Type:<b>Full Time</b></li> 

例のページ:http://tiruvallur.click.in/job-vacancy-in-uk-needed-engineers-send-your-cv-c98-v15807437

+0

私は変更を元に戻していない、なぜ私はあなたがそれを削除した1行を追加しましたか?最初から不明な点をおかけして申し訳ありませんが、私はこのフォーラムで初めてであり、管理者が私の質問を編集しているのが初めてです。 – Future

+0

私は管理者ではなく、現在および将来の読者のためにサイトをより良くしようとする編集権限を持つ経験豊かなユーザーです。私の編集内容を自由に変更してください。あなたの質問です。なぜ私がそれらを作ったのかを理解せずに、それらをすべて拒否しないようにお願いします。 – kjhughes

+0

質問の内容に戻りましょう。提案された回答の使用方法と受け取った結果(特定のエラーを含む)を正確に共有している場合は、あなたの難しさを解決できるはずです。これは、私が提供した2つのXPathがサンプル(共通のルート要素でラップされている)と要求どおりに動作するすべてのケースでテストされていることを知るのに役立ちます。 – kjhughes

答えて

1

このXPath式

string(//li[starts-with(., 'Job Type:')]/b) 

はあなたの例のために

Full Time 

を選択します。

また、おそらくより堅牢、あなたはの文字列値のラベルの後に、サブストリングがかかる場合がありますli

substring-after(//li[starts-with(., 'Job Type:')], 'Job Type:') 

もスプリアス空白を排除するために同じ文字列

Full Time 

を選択します、使用normalize-space()

normalize-space(substring-after(//li[starts-with(., 'Job Type:')], 'Job Type:')) 
+0

あなたのXPATHはこのウェブサイトから何も抽出しません – Future

+0

私が提供した両方のXPathはあなたの例とあなたの質問にリンクされているウェブページの両方で働きます。 Webページには実際には空白が多くありますが、 'normalize-space()'で簡単に修正できます。回答が更新されました。それ以外の場合、それはあなたのために働いていない場合、あなたは途中でいくつかの間違いをしています。あなたの仕事を再確認したり、あなたが行っていることを正確に投稿したりすることで、あなたがそれを確認する手助けをすることができます。 – kjhughes

0

これを試してみてください: // * EX用/ B /テキスト()

[(テキスト()、 'あなたのラベル名')を含ま]:

//*[contains(text(),'Job category')]/b/text() 
+0

あなたのXPATHはこのウェブサイトから何も抽出しません – Future

+0

あなたが直面している問題はわかりません。あなたのコードのスクリーンショットを教えてください。私は上記を試して、うまく動作しています。以下のsnip :: [image](https://s26.postimg.org/y0h8kc47d/xpath.png) –

+0

私はwww.import.ioソフトウェアを使用しています。 Firefoxで動作します。複数回試行した結果、データを抽出するXPATHが見つかりました。// li [contains(。、 "Job Type")]/b – Future

関連する問題