2016-06-17 2 views
0

私がresponse.xpath('//div').extract()を実行しても、response.xpath()が空の配列[]this pageに返すのはなぜでしょうか! 例:(scrapy shell response.xpath())を使用して空の配列を取得するのはなぜですか?

$ scrapy shell https://www.amazon.cn/b/2127529051 
... 
>>> response.xpath('//div').extract() 
[] 

私はホームページからいくつかの結果を得ることができますが、私は多くの他のページから任意の結果を得ることができません。

BTW、私はアマゾンなどをクロールしようとしていません。これは単なる学習目的のためのものです。

私は他のサイトも試しましたが、この問題に直面していなかったので、理由を知りたいと思います。

アイデア?

おかげ

答えて

0

response.xpath('\\div').execute()

は、この行は単に間違っています。まず最初にバックスラッシュの代わりにフロントスラッシュを使用します。また​​はSelectorまたはSelectorListオブジェクトのメソッドではありません(response.xpath()メソッドによって返される値)。

試してみてください。あなたのコードよりもresponse.xpath("//div").extract()

その他はそれがJavaScriptをオフにして、あなたのクモを見ている正確にものを見るためにview(response)を実行することをお勧めします破壊されます。場合によっては、スパイダーは"//div[@id='name']"が表示されないこともあります。これはjavascriptでロードされているためです。

+0

ご回答ありがとうございます。実際に私が使用したコードは正しいですが、この質問にはありません。私は実際に 'response.xpath(" // div ")。extract()'を使用しました。私は急いで質問を記入していたので、ここでコードを逃しました。私は 'view(レスポンス)'を試みます。 – XO39

+0

私は、 'scrap shell https:// www.amazon.cn/b/2127529051'と' response.xpath( "// div")を試しました。 ブロックされていないことを確認してください。 'view(response)'で 'response'を見て、' response.status'をチェックして '200'を取得しているかどうか確認してください。 – Granitosaurus

+0

'response.status'に' 301'、 'view(response)'に空のページがあります。 – XO39

関連する問題