Scrapyを使用して、ウェブサイトから音楽コンサートに関するデータを抽出しています。私が使用している少なくとも1つのWebサイトは、h1要素内のp要素を(間違って、W3C - Is it valid to have paragraph elements inside of a heading tag in HTML5 (P inside H1)?に従って)使用します。それにもかかわらず、p要素内のテキストを抽出する必要があります。Python/Scrapyでh1内のpを抽出する
私はドキュメントを読んで使用例を見てきましたが、Scrapyには比較的新しいものです。私は、XMLツリーを認識するために、セレクタタイプを "html"ではなく "xml"に設定することと解決策があることを理解していますが、私にとっては、このインスタンスでどのように、どこで行うのかわかりません。私はアイテムと呼ばれるコンサートを行っている
<h1 class="performance-title">
<p>Bernard Haitink conducts Brahms and Dvořák featuring pianist Emanuel Ax
</p>
</h1>
()「タイトル」と呼ばれる値を持っています
は例えば、ウェブサイトは、以下のHTMLを持っています。私のアイテムローダーでは、私が使用します。
['\n ', '\n ', '\n ']
次のような
def parse_item(self, response):
thisconcert = ItemLoader(item=Concert(), response=response)
thisconcert.add_xpath('title','//h1[@class="performance-title"]/p/text()')
return thisconcert.load_item()
これはアイテム[「タイトル」]、p要素内のテキストが含まれていないUnicodeのリストには、返し、私は理由を理解していますが、周りを回る方法はわかりません。
私はここで間違っていますが、どうすればこの問題を含むHTMLを解析できますか(h1内のp)?
私はこの特定の問題に関する情報をBehavior of the scrapy xpath selector on h1-h6 tagsで参照しましたが、特定のテキスト文字列を使用するセッション内のスパイダーに適用できる完全なソリューションは提供していません。
を見つけることによって、次のとおりです。 " $ x '=' // h1 [@ class = "performance-title"]/text() '; // h1 [@ class = "performance-title"]/text – mtt2p
ありがとうございます。私はちょうど今それを試み、まだ空の文字列の同様のセットを取得します。 – NFB
私にリンクを送ってください! – mtt2p