2017-07-25 12 views
0

ウェブスクレイピングとScrapyを初めて使用しています。あなたが私を助けることを願っています。Scrapy: "id"セレクタを使用するHTMLタグからデータを抽出する "クラス"の代わりに

タグを使用するWebページからデータを抽出しようとしています。 spanタグとは、例えば、クラスを使用している場合は通常、:

<span class="class_A>Hello, World!</span> 

私はテキストを取得するには、次のコードを使用します。

request.css('span.class_A::text').extract() 

HTMLは今代わりに「クラス」の「ID」を使用している場合しかし、例えば、

<span id="id_A>Hello, Universe!</span> 

以下のコードは、もはや機能しません。

request.css('span.id_A::text').extract() 

助けてください! "id"を使ってデータを抽出する正しい方法は何ですか?

ありがとうございました!

答えて

0

これは片道です。

>>> HTML = ''' 
... <span id="id_A">Hello, Earth</span> 
... <span id="id_B">Hello, Universe</span> 
... ''' 
>>> from scrapy.selector import Selector 
>>> selector = Selector(text=HTML) 
>>> selector.css('[id="id_A"]::text').extract() 
['Hello, Earth'] 

また

>>> HTML = ''' 
... <span id="id_A">Hello, Earth</span> 
... <span id="id_B">Hello, Universe</span> 
... ''' 
>>> from scrapy.selector import Selector 
>>> selector = Selector(text=HTML) 
>>> selector.css('span#id_A::text').extract() 
['Hello, Earth'] 

Scrapyは、問題は、あなたが "クラスセレクタを"(参照のためthisを確認してください)を使用しているということですW3 Selectors Level 3

+0

ありがとう、ありがとう。 htmlコードを入力せずにこれを行うにはどうすればよいですか? –

+0

編集をご覧ください。 –

1

を次のcssselect使用しています。 「IDセレクタ」を実際に使用する必要があります。これは動作するはずです:

+0

こんにちは、ありがとうございます。しかし、これはまだ空リストを与えています。 –

+0

何とか、私はこれを何回も試みました。うまく行かなかった。さて、私は別のidを持つ別のスパンでそれを試してみると、うまくいきました。次に、このでもう一度試してみましたが、すでに動作していますか?今何があったの?私がすべてを見直したとき、それはまったく同じだった。しかし、ありがとうございます!私はあなたの助けにとても満足しています。それは私を大いに助けますが、私はまだ何が起こったのか把握しようとしています。 –

関連する問題