scrapy,我想去除提取到csv文件中的空行

2 投票
1 回答
1797 浏览
提问于 2025-04-17 23:58

我正在从一个页面提取数据。当然,我还需要深入挖掘,但我现在还是卡在这个第一页。这是我的代码:

from scrapy.contrib.spiders import CrawlSpider
from scrapy.selector import HtmlXPathSelector
from street.items import HstreetItem

class MySpider(CrawlSpider):
name = "go-h"
allowed_domains = ["http://somedomain.com"]
start_urls = ["http://somedomain.com"]

def parse(self,response):
    #response = response.replace(body=response.body.replace('\n', '')) # doesn't work
    hxs = HtmlXPathSelector(response)
    details = hxs.select('//tr')
    items = []
    #n = 0
    for detail in details:
        item = HondastreetItem()
        item['url'] = "".join(detail.select('td[@class="Model_LineModel_odd"]/a/@href | td[@class="Model_LineModel_even"]/a/@href').extract()).strip()
        item['model'] = "".join(detail.select('td[@class="Model_LineModel_odd"]/a/text() | td[@class="Model_LineModel_even"]/a/text()').extract())
        item['year'] = "".join(detail.select('td[@class="Model_LineYear_odd"]/text() | td[@class="Model_LineYear_even"]/text()').extract())            
        items.append(item)
    return items

这段代码运行得很好,它通过我的处理流程把数据提取到一个CSV文件里,效果也正如我所期望的那样:

cell 1 | cell2 | cell3
url    | model | year
 .
 .
 .

问题是,我的CSV文件里有很多空行。一开始有17行空行,然后在填充数据的行之间也有空行。我觉得是因为在我抓取的表格前面有一些表格,以及在抓取的表格里面有一些我不需要的行(比如分类名称)导致的。

我已经在这个问题上卡了24小时了 :( 我试过了很多类似问题的解决方案,但都没有用。

谢谢你的帮助!

1 个回答

4

我刚接触Python,来这里想了解一下scrapy。

根据我的理解,你可能是在添加空行。所以你可以在添加之前检查一下'item'是不是空的,比如说:

if not (item['url'] == "" and item['model'] == "" and item['year'] == ""):
    items.append(item)

如果我理解错了问题,请忽略我。

撰写回答