我有一个与Scrapy合作的scrap web项目。而且我有无限分页的URL。我的起始URL是:https://nuevo.jumbo.cl/lacteos-y-bebidas-vegetales/leches-blancas?sl=3a356ef2-a2d4-4f1b-865f-c79b6fcf0f2a&PS=50&cc=18&sm=0&PageNumber=1&fq=C:/1/3/
,其中“ PageNumber”是1到N个页面。
我将其放在parse函数的for循环中进行测试:
for i in range(1,100):
yield FormRequest(
url=self.base_url+o.path,
method="GET",
formdata={'sl':'3a356ef2-a2d4-4f1b-865f-c79b6fcf0f2a','PS':'50','cc':'18','sm':'0','PageNumber':str(i),'fq':fq},
callback=self.parse_products,
meta = {
'dont_redirect': True,
})
但是我需要在没有for循环的情况下执行此操作,因为在“ start_urls”中,我还有更多不同的“ PageNumber”。
所以我需要的是从PageNumber 1转到N,并且当没有更多页面时,停止该请求。
我尝试使用meta dont_redirect,因为当蜘蛛找不到更多页面时,我正在重定向到其他页面。 我尝试在 process_response()中使用中间件,
if response.status == 301:
raise IgnoreRequest
因此,它不会重定向到另一页,但会继续尝试扫描。
我需要做类似的事情:
while(true):
yield FormRequest #...etc etc etc...
答案 0 :(得分:1)
我从网络行为Products api观察到
这是从中获取产品的api,这里AUTHOR_USER_MODEL
控制分页,AbstractUser
控制产品类别等,但是当pageNumber超过时,它永远不会给您重定向{我有在邮递员中对其进行了测试},但响应为空,因此请检查api调用中是否收到了产品,请增加页码,否则请停止。并更改PageNumber
[类别]