首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解决scrapy中的403错误

如何解决scrapy中的403错误
EN

Stack Overflow用户
提问于 2016-08-29 16:48:11
回答 2查看 15K关注 0票数 10

我是scrapy的新手,我做了一个废弃数据的scrapy项目。

我正在尝试从网站上抓取数据,但我得到了以下错误日志

代码语言:javascript
复制
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控制台上的命令:

代码语言:javascript
复制
$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()')

请帮帮我。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-29 17:23:14

就像评论中提到的Avihoo Mamka一样,你需要提供一些额外的请求头,才不会被这个网站拒绝。

在这种情况下,它似乎只是User-Agent头。默认情况下,scrapy将自己标识为用户代理"Scrapy/{version}(+http://scrapy.org)"。一些网站可能会因为这样或那样的原因而拒绝这样做。

要避免这种情况,只需使用通用用户代理字符串设置Requestheaders参数:

代码语言:javascript
复制
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,但你应该坚持使用流行的网络浏览器,如火狐,Chrome等,以获得最好的结果

你也可以实现它来和你的爬虫start_urls一起工作:

代码语言:javascript
复制
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)
票数 13
EN

Stack Overflow用户

发布于 2020-05-13 13:31:21

在settings.py文件中添加以下脚本。如果您将selenium与scrapy结合使用,则可以很好地工作。

代码语言:javascript
复制
headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:48.0) Gecko/20100101 Firefox/48.0'}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39202058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档