如何解析Scrapy请求中的502响应代码?

如何解析Scrapy请求中的502响应代码?,scrapy,request,response,crawlera,Scrapy,Request,Response,Crawlera,我创建了一个spider,它使用Scrapy从Yelp中提取数据。所有请求都通过Crawlera代理。Spider获取要从中刮取的URL,发送请求,并刮取数据。直到前几天,当我开始得到502无响应时,这一切都很顺利。将出现502 None响应 执行此行后: r=self.req\u session.get(url,proxies=self.proxies,verify='../secret/crawlera-ca.crt')。text 回溯: 2020-11-04 14:27:55[urlib3

我创建了一个spider,它使用Scrapy从Yelp中提取数据。所有请求都通过Crawlera代理。Spider获取要从中刮取的URL,发送请求,并刮取数据。直到前几天,当我开始得到502无响应时,这一切都很顺利。将出现502 None响应 执行此行后:

r=self.req\u session.get(url,proxies=self.proxies,verify='../secret/crawlera-ca.crt')。text

回溯:

2020-11-04 14:27:55[urlib3.connectionpool]调试:https://www.yelp.com:443 “GET/biz/a-dog-in-motion-arcadia HTTP/1.1”502无

因此,spider似乎无法访问URL,因为连接已关闭

我已经检查了Scrapy和Crawlera文档中的502含义,它指的是连接被拒绝、关闭、域不可用以及类似的事情。 我已经调试了与问题发生地点相关的代码,所有内容都是最新的

如果有人对此有想法或了解,我很乐意听到,因为我被卡住了。这里到底有什么问题


注意:当我在浏览器中打开Yelp URL时,它们会正常工作。

有些页面对于某些国家/地区不可用,因此建议使用代理。我尝试输入url,连接成功

2020-11-05 02:50:40 [scrapy.extensions.telnet] DEBUG: Telnet console listening on 127.0.0.1:6024
2020-11-05 02:50:40 [scrapy.core.engine] INFO: Spider opened
2020-11-05 02:50:43 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://www.yelp.com/biz/a-dog-in-motion-arcadia> (referer: None)```
2020-11-05 02:50:40[scrapy.extensions.telnet]调试:telnet控制台监听127.0.0.1:6024
2020-11-05 02:50:40[刮屑.堆芯.发动机]信息:十字轴已打开
2020-11-05 02:50:43[碎片堆芯引擎]调试:爬网(200)(参考:无)```

该网站从您请求的标题中看到您是一个“刮刀”,而不是人类用户

你应该在请求中发送不同的标题,这样被删除的网站就会认为你是在用普通浏览器浏览


有关更多信息,请参阅。

这太好了,尽管我正在使用代理,但仍然获得502。您是否考虑过在Scrapy和Crawlera中禁用cookie?这很有效。我为Crawlera添加了一些以前没有的附加标题。谢谢。事实上,这就是问题所在。我发送了常规的浏览器标题,但由于某些原因,它们不再足够了。添加这些解决了问题:
DEFAULT\u REQUEST\u HEADERS={
“X-Crawlera-Profile”:“桌面”,“X-Crawlera-Cookies”:“禁用”,“禁用”
}