2016-04-20 11 views
0

おかげさまでよろしくお願いいたします。 Python 2.7でScrapyを使用しているときに問題が発生しました。 クロールしようとしたウェブページはa discussion board for Chinese stock marketです。 最初の数字「42177」をこのページのバナーのすぐ下に表示しようとしたとき(そのウェブページに表示されている数字は、ここに表示されている数字ではない可能性があります。リアルタイムで更新されています...)、私はいつも空のコンテンツを取得します。私はこれが動的なコンテンツの問題かもしれないが、それを正しくクロールする方法の手がかりを持っていないことを認識しています。スクラブを使用すると内容が空になる

42177 is the number I tried to crawl

私が使用したコードは次のとおりです。

item["read"] = info.xpath("div[@id='zwmbti']/div[@id='zwmbtilr']/span[@class='tc1']/text()").extract() 

私は、XPathが正しく設定されていると思うと、私はこの応答の戻り値をチェックして、それは確かにこの下には何もないと言ってくれましたディレクトリ。結果は'read': [u'<div id="zwmbtilr"></div>']

<div id="zwmbtilr"></div>の間にあるはずです。

本当にありがとうございました。

答えて

1

NoScriptを有効にしてFirefoxであなたのリンクを開いたところです。 <div @id='zwmbtilr'></div>の中には何もありません。 JavaScriptを有効にすると、必要なコンテンツが表示されます。だから、あなたはすでに新しいように、それは動的なコンテンツの問題です。

最初のオプションは、javascriptによって生成されたリクエストを識別することです。もしあなたがそれを行うことができれば、あなたは治療から同じ要求を送ることができます。あなたがそれを行うことができない場合、次のオプションは、通常、javascript/browserエミュレーションまたはそのようなsometingでいくつかのパッケージを使用することです。 ScrapyJSまたはScrapy + Seleniumのようなものです。

+0

ありがとうDjunzu!最初に提案されたオプション、説明、またはリンクについて簡単な説明をしていただけますか?私はこの問題を真実にするためにこれが私の最初の時間ではなかったので、テクニックを学ぶのが大好きです...ありがとう! – fbabelle

+0

私は動的コンテンツを扱う必要がなかったので、以前の経験はありません。しかし、私はブラウザのリクエストを調べることにしました(FirefoxではFirebug + NoScriptを使うことができます)。また、javacriptソース自体も調べてください。単純なケースであれば、必要なリクエストを再作成する方法がわかります。たぶんこれが助けになるかもしれません:http://stackoverflow.com/questions/8550114/can-scrapy-be-used-to-scrape-dynamic-content-from-websites-that-are-using-ajax – Djunzu

関連する問題