2017-06-04 7 views
0

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&nbsp;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で参照しましたが、特定のテキスト文字列を使用するセッション内のスパイダーに適用できる完全なソリューションは提供していません。

+0

を見つけることによって、次のとおりです。 " $ x '=' // h1 [@ class = "performance-title"]/text() '; // h1 [@ class = "performance-title"]/text – mtt2p

+0

ありがとうございます。私はちょうど今それを試み、まだ空の文字列の同様のセットを取得します。 – NFB

+0

私にリンクを送ってください! – mtt2p

答えて

1

これはかなり困惑していました。率直に言えば、私はまだこれがどうして起こっているのか分からない。 <h1>タグ内に含まれるべき<p>タグがそうでないことを発見した。

<h1 class="performance-title">\n</h1> 
<p>Bernard Haitink conducts Brahms and\xa0Dvo\u0159\xe1k featuring\npianist Emanuel Ax 
</p> 

私が述べたように、私は私の疑問何もコンクリートを持っている:サイトから入手応答のようにそれを示し、一方、サイトのカールは、フォーム<h1><p> </p></h1>のを示しています。とにかく、それゆえ<p>タグ内のテキストを取得するためののXPathは次のとおりです。

response.xpath('//h1[@class="performance-title"]/following-sibling::p/text()').extract() 

これはランドマークとして<h1 class="performance-title">を使用し、それをこのXPathので試してみて、その兄弟<p>タグ

+0

これは動作します - ありがとう!マークされた回答。 – NFB

+0

確かに、喜んで助けてください。 –

0
//*[@id="content"]/section/article/section[2]/h1/p/text() 
+1

あなたはこれをどのような状況で私に見せることができますか?上記の私の治療コードに入れば、これは全く['title']という項目を返しません。私は参照している:https://stackoverflow.com/questions/19779519/is-it-valid-to-have-paragraph-elements-inside-of-a-heading-tag-in-html5-p-insidとhttp: // techqa。info/programming/question/41063971/xpath-selector-on-h1-h6-tags – NFB

+0

これらのリンクを含む質問を改訂しました。 – NFB

関連する問題