0

我创建了一个蜘蛛,它使用 Scrapy 从 Yelp 中抓取数据。所有请求都通过 Crawlera 代理。Spider 获取要抓取的 URL,发送请求并抓取数据。这一直很好,直到前几天我开始收到 502 None 响应。执行此行后出现 502 None 响应:

r = self.req_session.get(url, proxies=self.proxies, verify='../secret/crawlera-ca.crt').text

追溯:

2020-11-04 14:27:55 [urllib3.connectionpool] DEBUG: https://www.yelp.com:443 "GET /biz/a-dog-in-motion-arcadia HTTP/1.1" 502 None

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

我在 Scrapy 和 Crawlera 文档中检查了 502 的含义,它指的是连接被拒绝、关闭、域不可用和类似的事情。我已经调试了与问题发生位置相关的代码,并且一切都是最新的。

如果有人对此有想法或知识,我很乐意听到,因为我被困住了。这里实际上可能是什么问题?

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

4

2 回答 2

1

该网站从您的请求标头中看到您是“爬虫”而不是人类用户。

您应该在请求中发送不同的标头,以便被抓取的网站认为您正在使用常规浏览器进行浏览。

有关详细信息,请参阅scrapy 文档

于 2020-11-07T20:33:25.447 回答
0

某些页面在某些国家/地区不可用,因此建议使用代理。我尝试输入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-05T02:55:32.247 回答