无法使用 scrappy 抓取网站,但可以使用相同的设置使用 scrappy shell 请求和使用相同的网站
unable to crawl a website using scrappy but the same website can be requested and used using scrappy shell using same settings
我正在尝试抓取网站 https://www.rightmove.co.uk/properties/105717104#/?channel=RES_NEW
但我收到 (410) 错误
信息:忽略响应 <410 https://www.rightmove.co.uk/properties/105717104>:HTTP 状态代码未处理或不允许
我只是想使用页面上的通知“此 属性 已被代理删除。”来查找已售出的房产。
我知道该网站没有阻止我,因为我可以使用 scrappy shell 来获取数据并且查看(响应)也很好,我可以直接转到相同的 URL 使用网络浏览器所以 410 没有意义我也可以从同一域抓取页面,
(即)没有通知“此 属性 已被代理删除。”的页面。
如有任何帮助,我们将不胜感激。
似乎是当一个列表被 Rightmove 上的代理商标记为删除时,该网站将 return 状态代码 410 Gone
(这很奇怪)。但要解决这个问题,只需在您的请求中做这样的事情:
def start_requests(self):
yield scrapy.Request(
url='https://www.rightmove.co.uk/properties/105717104#/?channel=RES_NEW',
meta={
'handle_httpstatus_list': [410],
}
)
编辑
说明:基本上,Scrapy 只会处理来自 200-299
范围内的响应的状态码,因为 2XX
意味着这是一个成功的响应。在你的例子中,你得到了一个 4XX
状态代码,这意味着发生了一些错误。通过传递 handle_httpstatus_list = [410]
我们告诉 Scrapy 我们希望它也处理 410
响应而不仅仅是 200-299
.
这是文档:https://docs.scrapy.org/en/latest/topics/spider-middleware.html#std-reqmeta-handle_httpstatus_list
我正在尝试抓取网站 https://www.rightmove.co.uk/properties/105717104#/?channel=RES_NEW 但我收到 (410) 错误
信息:忽略响应 <410 https://www.rightmove.co.uk/properties/105717104>:HTTP 状态代码未处理或不允许
我只是想使用页面上的通知“此 属性 已被代理删除。”来查找已售出的房产。
我知道该网站没有阻止我,因为我可以使用 scrappy shell 来获取数据并且查看(响应)也很好,我可以直接转到相同的 URL 使用网络浏览器所以 410 没有意义我也可以从同一域抓取页面, (即)没有通知“此 属性 已被代理删除。”的页面。
如有任何帮助,我们将不胜感激。
似乎是当一个列表被 Rightmove 上的代理商标记为删除时,该网站将 return 状态代码 410 Gone
(这很奇怪)。但要解决这个问题,只需在您的请求中做这样的事情:
def start_requests(self):
yield scrapy.Request(
url='https://www.rightmove.co.uk/properties/105717104#/?channel=RES_NEW',
meta={
'handle_httpstatus_list': [410],
}
)
编辑
说明:基本上,Scrapy 只会处理来自 200-299
范围内的响应的状态码,因为 2XX
意味着这是一个成功的响应。在你的例子中,你得到了一个 4XX
状态代码,这意味着发生了一些错误。通过传递 handle_httpstatus_list = [410]
我们告诉 Scrapy 我们希望它也处理 410
响应而不仅仅是 200-299
.
这是文档:https://docs.scrapy.org/en/latest/topics/spider-middleware.html#std-reqmeta-handle_httpstatus_list