索引错误时 Scrapy 不输出记录

Scrapy not outputing record when indexerror

我目前的 scrapy 代码有问题:我正在抓取一个网站,并尝试获取数据。有时在某些页面中,此数据不存在,然后如预期的那样出现众所周知的索引错误。 但是附加到它的所有记录都没有放在输出文件中:这很烦人。

我该如何找到解决方案?我尝试了 if response.xpath("whatever_data")="":.. else..

我尝试了一个尝试方法,我试图排除索引错误.. 没有任何效果。

有什么想法吗?

这是我的代码:

class QuotesSpider(scrapy.Spider):
name = "quotes"

   start_urls = ['http://www.verif.com/recherche/?search=v/1/ca/h_siren=&h_code_ape=2060Z']

def parse(self, response):
    for lien_fiche in response.css('a::attr(href)').re(r'\/societe\/.+'):

        yield scrapy.Request(response.urljoin(lien_fiche), callback=self.parse_fiche)
    next_page = response.css('a.btn-page.btn-next::attr(onclick)').re(r'/recherche.+2060Z')[0]
    if next_page is not None:

        next_page = response.urljoin(next_page)
        yield scrapy.Request(next_page, callback=self.parse)

def parse_fiche(self, response):

        code_ape = "2060Z"

        yield {
            'nom': response.xpath('//td[@class="tdhead"][text()="Raison sociale "]/following-sibling::td/text()').extract_first(),
            'CA 2015' : response.xpath('//td[@class="tdhead"][text()="Chiffre d\'affaires 2015 "]/following-sibling::td/a/text()').re(r'\n\s+([0-9€ ]+)'),
            'Capital social' : response.xpath('//td[@class="tdhead"][text()="Capital Social "]/following-sibling::td/text()').extract_first(),
            'SIRET': response.xpath('//td[@class="tdhead"][text()="SIRET "]/following-sibling::td/text()').extract_first(),
            'code APE': code_ape,
            'effectif': response.css('script').re(r'=(effectif.+);ca'),
            'dirigeant':
                response.xpath('//table[@class="table table-default dirigeants"]/tr/td[@class="tdhead"]/text()')[
                    0].extract() + " " + response.xpath(
                    '//table[@class="table table-default dirigeants"]/tr/td[@class="tdhead"]/following-sibling::td/a/text()')[
                    0].extract(),

        }

最佳,

感谢反馈,我最终选择了try/except方法:)