2016-08-29 63 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

相关问题