通常のブラウザでは正常に機能するリクエストがありますが、スクレイピー シェルでは機能しません。「スクレイピー シェル」または「スクレイピー クロール」を使用すると、HTML ブロック全体がすぐに消えてしまいます。私は確かに禁止されていません。
以下は、mozilla のような通常のブラウザを使用して、以下のリンク (フランスの Web サイト プロパティ オークション) のこちらにリダイレクトされる前の github (写真付き) の問題です。
https://github.com/scrapy/scrapy/issues/2109
簡単に言うと、オークションサイトをスクレイピングしてみました。また、通常のブラウザでは、すべてのデータが正常に表示されます。しかし、scrapy シェルで確認したところ、response.body から HTML ブロック全体が欠落しています。
scrapy shell http://www.licitor.com/ventes-judiciaires-immobilieres/tgi-fontainebleau/mercredi-15-juin-2016.html
次のように入力してユーザーエージェントを変更した場合でも:
scrapy shell -s USER_AGENT='Mozilla/5.0 (Windows NT 6.2; Win64; x64; rv:16.0.1) Gecko/20121011 Firefox/16.0.1' 'http...the rest of url'
潜在的なヘッダーの問題またはJavaScriptの問題であると言われたため、ユーザーエージェントを変更しようとしました。
さらに、端末のこのメッセージエラーは次のように述べています。
[1:1:0710/114628:ERROR:PlatformKeyboardEvent.cpp(117)] 静的 PlatformEvent::Modifiers で実装されていません。blink::PlatformKeyboardEvent::getCurrentModifierState()
DOWNLOAD_HANDLERS: {'s3': None}
念のため、エラー メッセージを取り除くために設定を追加する必要がありました。
私はubuntu 14で実行しており、scrapy 1.03でanacondaをインストールしています。
人々を喜ばせるポイントをどこで見逃していますか?
編集: ヘッダー ソリューションを確認するために、うまく機能する mozilla ブラウザーから同じヘッダーをコピーして、私のスクレイピー シェルに貼り付けます。これが私のコードです:
from scrapy import Request
req = Request('MY_URL',
headers={
'Accept': 'text/html, */*; q=0.01',
'Accept-Encoding': 'gzip, deflate, sdch',
'Accept-Language': 'fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4',
'User-Agent':"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36",
})
fetch(req)
HTML データがまだありません。
JavaScriptがスクレイピーの動作を妨げる可能性はありますか?
編集:
また、docker の前提条件を使用して、scrapy-splash をインストールしました。
そして、スプラッシュサーバーを使用してこの問題を処理しようとしました。
それでも同じ問題!! これが私のコードです:
$ scrapy shell
from scrapy import Request
from scrapy_splash import SplashRequest
url='http://www.licitor.com/ventes-judiciaires-immobilieres/tgi-paris/jeudi-7-juillet-2016.html'
req = SplashRequest(url, args={'wait': 0.5},
headers={
'Accept': 'text/html, */*; q=0.01',
'Accept-Encoding': 'gzip, deflate, sdch',
'Accept-Language': 'fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4',
'User-Agent':"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36",
})
fetch(req)
view(response)
要約すると、これは私がしたことです:
- ヘッダーを Mozilla ブラウザーと同じになるように変更しました (動作します)。
- Splashをインストールして、それを使ってjavascriptを処理しようとしました