gpt4 book ai didi

python-2.7 - 如何解决scrapy中的403错误

转载 作者:行者123 更新时间:2023-12-04 11:48:58 35 4
gpt4 key购买 nike

我是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()')

请帮我。

谢谢

最佳答案

就像评论中提到的 Avihoo Mamka 一样,您需要提供一些额外的请求 header ,以免被本网站拒绝。

在这种情况下,它似乎只是 User-Agent标题。默认情况下,scrapy 将自己标识为用户代理 "Scrapy/{version}(+http://scrapy.org)" .某些网站可能会出于某种原因拒绝此操作。

为了避免这种情况,只需设置 headers您的 Request 的参数使用通用用户代理字符串:

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、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)

关于python-2.7 - 如何解决scrapy中的403错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39202058/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com