0

以下のようなhtmlの一部があります

<li><label>The Keyword:</label><span><a href="../../..">The text</a></span></li>

文字列「キーワード:テキスト」を取得したい。

Chrome inspect または FF firebug を使用して上記の html の xpath を取得し、次に hxs.select(xpath).extract() を取得し、html タグを削除して文字列を取得できることを知っています。ただし、xpath は異なるページ間で一貫していないため、このアプローチは十分に一般的ではありません。

したがって、私は以下のアプローチを考えています: まず、「The Keyword:」を使用して検索します。

hxs = HtmlXPathSelector(response)
hxs.select('//*[contains(text(), "The Keyword:")]')

pprint を実行すると、いくつかのリターンが得られます。

>>> pprint( hxs.select('//*[contains(text(), "The Keyword:")]') )
<HtmlXPathSelector xpath='//*[contains(text(), "The Keyword:")]' data=u'<label>The Keyword:</label>'>

私の質問は、「キーワード:テキスト」という文字列を取得する方法です。xpathがわかっている場合、もちろん必要な文字列を取得できます。

スクレイピーな HtmlXPathSelector 以外のソリューションを受け入れます。(例えば、lxml.html にはもっと多くの機能があるかもしれませんが、私はそれにとても慣れていません)。

ありがとう。

4

1 に答える 1

0

私があなたの質問を正しく理解していれば、「次の兄弟」があなたが気をつけていることです。

 //*[contains(text(), "The Keyword:")]/following-sibling::span/a/text()

Xpath軸

于 2012-12-27T15:03:38.477 に答える