2016-08-29 16 views
5

私は治療に新しく、私はデータをスクラップするために治療プロジェクトを作った。治療で403エラーを解決するには

私はウェブサイトのコンソールで次のコマンドをしようとしている私は、ウェブサイトからデータをscrapyしようとしているが、私は次のエラー・ログに

2016-08-29 14:07:57 [scrapy] INFO: Enabled item pipelines: 
[] 
2016-08-29 13:55:03 [scrapy] INFO: Spider opened 
2016-08-29 13:55:03 [scrapy] INFO: Crawled 0 pages (at 0 pages/min),scraped 0 items (at 0 items/min) 
2016-08-29 13:55:04 [scrapy] DEBUG: Crawled (403) <GET http://www.justdial.com/robots.txt> (referer: None) 
2016-08-29 13:55:04 [scrapy] DEBUG: Crawled (403) <GET http://www.justdial.com/Mumbai/small-business> (referer: None) 
2016-08-29 13:55:04 [scrapy] DEBUG: Ignoring response <403 http://www.justdial.com/Mumbai/small-business>: HTTP status code is not handled or not allowed 
2016-08-29 13:55:04 [scrapy] INFO: Closing spider (finished) 

を取得していますが、私は応答を得たが、私がいる時Pythonスクリプトの中で同じパスを使用すると、上で説明したエラーが発生します。 Webコンソール上

コマンド:

$x('//div[@class="col-sm-5 col-xs-8 store-details sp-detail paddingR0"]/h4/span/a/text()') 
$x('//div[@class="col-sm-5 col-xs-8 store-details sp-detail paddingR0"]/p[@class="contact-info"]/span/a/text()') 

私を助けてください。 Avihoo Mamka同様

おかげ

+0

"scrapy"にヘッダーを追加する必要があるかもしれないので、ブラウザのように動作しますか? –

+0

こんにちはAvihoo、ヘッダーを追加する方法と追加する場所を教えてください。ありがとう – JT28

+0

この行を 'request'に追加する必要があります:' request.headers = Headers({'User-Agent': 'Mozilla /こんにちはGranitosaurus、私は最後の行、つまりyield requestでエラーを受けました。5.0(X11; Linux x86_64)AppleWebKit/537.36(GeckoのようなKHTML)Chrome/51.0.2687.0 Safari/537.36 '}) ' –

答えて

4

は、あなたがこのウェブサイトによって拒否されませためにいくつかの余分なリクエストヘッダを提供する必要がコメントで述べました。

この場合、それはちょうどUser-Agentヘッダーであるようです。デフォルトでは、詐欺はユーザエージェント"Scrapy/{version}(+http://scrapy.org)"でそれ自身を識別します。いくつかのウェブサイトは、この理由を理由にこれを拒否するかもしれません。

headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:48.0) Gecko/20100101 Firefox/48.0'} 
yield Request(url, headers=headers) 

あなたは巨大なlist of user-agents hereを見つけることができます、あなたがFirefoxの、クロムなどのような人気のあるウェブブラウザのものに固執すべきであるにもかかわらず:これはちょうど一般的なユーザーエージェント文字列を使用してRequestheadersパラメータを設定避けるため

。最高の結果

のためにあなたもあなたのクモstart_urlsで動作するようにそれを実装することができます

class MySpider(scrapy.Spider): 
    name = "myspider" 
    start_urls = (
     'http://scrapy.org', 
    ) 

    def start_requests(self): 
     headers= {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:48.0) Gecko/20100101 Firefox/48.0'} 
     for url in self.start_urls: 
      yield Request(url, headers=headers) 
+0

どのパッケージをインポートする必要がありますか? – JT28

+0

@ user6215669 'from scrapy import Request'または' scrapy.Request'で置き換えるだけです。 – Granitosaurus

+0

ありがとうございます..! – JT28