2016-08-29 61 views
5

我是scrapy的新手,我做了scrapy項目來取消數據。如何解決scrapy中的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()') 

請幫助我。在評論中提及

感謝

+0

也許你需要爲'scrapy'添加頭文件,以便它像瀏覽器一樣工作? –

+0

嗨Avihoo,你能讓我怎麼添加標題和添加它在哪裏。謝謝 – JT28

+0

你需要添加這一行到你的'request':'request.headers = Headers({'User-Agent':'Mozilla/5.0(X11; Linux x86_64)AppleWebKit/537.36(KHTML,像Gecko)Chrome/51.0.2687.0 Safari/537.36'})' –

回答

4

像Avihoo Mamka你需要提供一些額外的請求頭,以沒有得到本網站拒絕。

在這種情況下,它似乎只是User-Agent標題。默認情況下,scrapy通過用戶代理"Scrapy/{version}(+http://scrapy.org)"來標識自己。有些網站可能出於某種原因拒絕了這一點。

爲了避免這種情況,只要將Requestheaders參數與普通用戶代理字符串:

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,但應與流行的Web瀏覽器的像火狐,Chrome等粘。最好的結果

您可以實現它與你的蜘蛛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

喂Granitosaurus,我得到了最後一行錯誤,即收益請求。我需要導入哪個包。 – JT28

+0

@ user6215669'from scrapy import Request'或者只是將它替換爲'scrapy.Request',因爲您已經導入'scrapy'反正。 – Granitosaurus

+0

謝謝它的作品..! – JT28

相關問題