Python 刮皮不';t等待第二个请求在后续链接中刮取数据

Python 刮皮不';t等待第二个请求在后续链接中刮取数据,python,scrapy,Python,Scrapy,我有一个在页面中搜索信息的剪贴簿,最终该信息在页面中不可用,但它有一个包含我想要的数据的链接。所以我想让我的刮板在接下来的链接中访问这些数据。我有一个如何做的想法,但还不能使它起作用 我正在试着做一个刮痧蛋糕: -向后续链接发出新请求 -刮取数据 -返回数据 -使用所有数据,脚本将继续下一个过程 问题是,前面的代码(调用新请求的代码)没有等待第二个请求,最终由于缺少该数据而遇到错误 下面是代码(经过简化,仅反映我的要求) 在数据不可用的页面中,代码将引发一个错误,因为它没有等待第二个请求来为刮取

我有一个在页面中搜索信息的剪贴簿,最终该信息在页面中不可用,但它有一个包含我想要的数据的链接。所以我想让我的刮板在接下来的链接中访问这些数据。我有一个如何做的想法,但还不能使它起作用

我正在试着做一个刮痧蛋糕: -向后续链接发出新请求 -刮取数据 -返回数据 -使用所有数据,脚本将继续下一个过程

问题是,前面的代码(调用新请求的代码)没有等待第二个请求,最终由于缺少该数据而遇到错误

下面是代码(经过简化,仅反映我的要求)

在数据不可用的页面中,代码将引发一个错误,因为它没有等待第二个请求来为刮取的_数据['author']刮取数据


我相信这可能是标准行为,但是有没有办法阻止它?或者另一种处理此类问题的方法?

您是否尝试过将其置于try/except块中,并使用
time.sleep()调用隐式sleep()
然后让脚本从停止的位置继续运行。然而,这将是您必须考虑更改代码的结构。您可以刮取两种不同类型的实体,作者和文章,然后在这些实体上进行后期处理,而不必刮取。
def parse_hearing_page(self, response):
    item = response.meta['item']
    selector = XPATH_PATTERN[self.page]
    for p in response.xpath(selector):
        date = ' '.join(p.xpath('strong/text()').extract())
        text = paragraph.xpath('.//text()').extract()
        scraped_data = {
            'date': parse_date(date),
            'author': None,
            'content': text,
            'url': response.url,
        }

        if date not in text:
            subsequent_page = p.xpath('../ul/li/a/@href').get()
            yield Request(urljoin(response.url, subsequent_page), meta=scraped_data, callback=self.parse_author)
        else:
            author = text.split('Authors')[1]         
            scraped_data['location'] = author
        if scraped_data['author'] is None:
            raise ValueError
        scraped_data['id'] = self.get_id_from_author(scraped_data['author'], scraped_data['url'])
        yield scraped_data   

def parse_author(self, response):
    selector = ('//div//article[@id="authors"]/text()')
    item = response.meta['item']
    author = response.xpath(selector)
    item['author'] = author
    yield item