首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >刮刮不尊重LIFO

刮刮不尊重LIFO
EN

Stack Overflow用户
提问于 2019-10-16 15:49:33
回答 1查看 43关注 0票数 0

我用的是Scrapy 1.5.1

我的目标是在转移到下一个变量之前对每个变量进行整个请求链。出于某种原因,Scrapy需要2个变量,然后发送2个请求,然后再接收另外2个变量,依此类推。

代码语言:javascript
复制
CONCURRENT_REQUESTS = 1

下面是我的代码示例:

代码语言:javascript
复制
def parsed ( self, response):
    # inspect_response(response, self)
    search = response.meta['search']

    for idx, i in enumerate(response.xpath("//table[@id='ctl00_ContentPlaceHolder1_GridView1']/tr")[1:]):

        __EVENTARGUMENT = 'Select${}'.format(idx)

        data = {

                      '__EVENTARGUMENT': __EVENTARGUMENT,

                  }

        yield scrapy.Request(response.url, method = 'POST', headers = self.headers, body = urlencode(data),callback = self.res_before_get,meta = {'search' : search}, dont_filter = True)     


def res_before_get ( self, response):
    # inspect_response(response, self)
    url = 'http://www.moj-yemen.net/Search_detels.aspx'
    yield scrapy.Request(url, callback = self.results, dont_filter = True)

我想要的行为是:1来自Parse的值被发送到res_before_get,然后我使用它进行处理。然后,来自Parse的另一个值被发送到res_before_get,等等。

代码语言:javascript
复制
Post
Get
Post
Get

但是目前Scrapy从Parse获取2个值并将它们添加到队列中,然后从res_before_get发送2个请求。因此,我得到了重复的结果。

代码语言:javascript
复制
Post
Post
Get
Get

我错过了什么?

这是asp.net网站。其逻辑如下:

  1. 使用搜索负载发出POST请求。
  2. 发出GET请求以获取实际数据。
  3. 都共享相同的sessionID

这就是为什么维护秩序是很重要的。

现在我得到了POST1和POST2。由于sessionID与POST2相关联,所以GET1和GET2都返回相同的页面。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-17 04:36:02

Scrapy异步工作,所以您不能期望它尊重循环的顺序或任何东西。

如果您需要它按顺序工作,则必须适应回调才能像这样工作,例如:

代码语言:javascript
复制
def parse1(self, response):
    ...
    yield Request(..., callback=self.parse2, meta={...(necessary information)...})


def parse2(self, response):
    ...
    if (necessary information):
        yield Request(..., 
             callback=self.parse2, 
             meta={...(remaining necessary information)...},
        )
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58417237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档