我使用链接提取器规则进行蜘蛛设置。蜘蛛爬行并刮擦我期望的物品,尽管它只会跟随“下一步”。分页按钮到第3页,然后蜘蛛完成没有任何错误,总共有50页要通过' Next'分页。 这是我的代码:
p = [1,2,3]
q = [6,5,4]
r = [7,8,9]
s = [8,9,10]
t = [9,10,11]
def d (*args):
maxv = [max(li) for li in [x for x in args]]
print( maxv )
product = functools.reduce(lambda x,y: x*y, maxv)
print( product )
d(p,q,r) # yields 162
d(p,q,r,s) # yields 1620
d(p,q,r,s,t) # yeilds 17820
感觉我可能会错过设置或其他东西,因为代码的功能与前3次迭代的预期相同。我的设置文件没有覆盖DEPTH_LIMIT默认值为0.任何帮助都非常感谢,谢谢。
编辑1 它似乎与我的代码没有任何关系,好像我从一个不同的产品页面开始,我可以在蜘蛛退出之前获取最多8页。不确定我是抓取的网站还是如何排查?
编辑2 对它进行故障排除可能会出现在我的“下一步”中。链接从网页上消失。当我从第一页开始时,存在分页元素以转到下一页。当我查看下一页的响应时,没有产品,也没有下一个链接元素,所以蜘蛛认为它完成了。我已经尝试启用cookie以查看该网站是否需要cookie才能进行分页。这没有任何影响。这可能是时间问题吗?
编辑3 我已经调整了下载延迟和并发请求值,看看是否有所作为。无论我是在1秒钟还是30分钟内拉出数据页面,我都会得到相同的结果。我假设30分钟足够慢,因为我可以手动比它更快。
编辑4 试图在调试模式下启用cookie和cookie中间件,看看是否会产生影响。提取cookie并随请求一起发送,但在尝试浏览页面时我会得到相同的行为。
答案 0 :(得分:1)
要检查网站是否在短时间内拒绝了太多请求,您可以将以下代码添加到您的蜘蛛中(例如,在您的rules
声明之前)并使用该值。另请参阅优秀的documentation。
custom_settings = {
'DOWNLOAD_DELAY': 0.4
}