我是scrapy的新手,我制作了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 :(得分:4)
与评论中提到的Avihoo Mamka一样,您需要提供一些额外的请求标题,以免被本网站拒绝。
在这种情况下,它似乎只是User-Agent
标题。默认情况下,scrapy通过用户代理"Scrapy/{version}(+http://scrapy.org)"
标识自己。有些网站可能会出于某种原因拒绝这一点。
要避免这种情况,只需使用通用用户代理字符串设置headers
的{{1}}参数:
Request
你可以找到一个巨大的list of user-agents here,虽然你应该坚持使用流行的网络浏览器,如Firefox,Chrome等,以获得最佳效果
您可以实施它以与您的蜘蛛headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:48.0) Gecko/20100101 Firefox/48.0'}
yield Request(url, headers=headers)
一起使用:
start_urls
答案 1 :(得分:0)
在settings.py文件中添加以下脚本。如果您将硒与草皮结合使用,则效果很好
headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:48.0) Gecko/20100101 Firefox/48.0'}