首页 > 解决方案 > Scrapy If 语句未在 for 循环中求值

问题描述

我想首先提一下,我在 Stack Overflow 上看到了与此类似的其他问题,并尝试了推荐的解决方案,但是,每次迭代都会复制有问题的行为。

我正在尝试从该网站https://www.marketwatch.com/investing/stock/aapl/financials提取数据以进行一些财务分析,但是,我的 csv 文件的转储始终为空。

我试图在 scrapy shell 中找出问题,似乎我的“in values”永远不会评估为 true,但我不确定为什么,因为初始 response.xpath 确实打印了表值。

代码如下。我感谢任何帮助,谢谢大家!

values = ["Sales/Revenue", "Cost of Goods Sold (COGS) incl. D&A", "Depreciation & Amortization Expense", "Gross Income", "SG&A Expense", "Research & Development", "EBIT after Unusual Expense", "Pretax Income", "Income Tax", "Net Income", "EBITDA"]

for row in response.xpath('//table[@class="crDataTable"]/tbody/tr[not(contains(@class,"thead"))]'):
        test = row.xpath('/td[1]//text()').extract()
        for i in values:
            if i in test:
                item['rowTitle'] = row.xpath('/td[1]//text()').extract()
                item['year1'] = row.xpath('/td[2]//text()').extract()
                item['year2'] = row.xpath('/td[3]//text()').extract()
                item['year3'] = row.xpath('/td[4]//text()').extract()
                item['year4'] = row.xpath('/td[5]//text()').extract()
                item['present'] = row.xpath('/td[6]//text()').extract()
                yield item

标签: xpathscrapy

解决方案


推荐阅读