将scrapy导出为单行

问题描述 投票:0回答:1

我想用scrapy把商店的位置刮成csv。我捕捉到了正确的数据,但输出的结果是这样的(以 "名称 "字段为例)。

csv输出

代码。

import scrapy

from xx.items import xxItem

class QuotesSpider(scrapy.Spider):
    name = 'xx_spider'
    allowed_domains = ['www.my.xx.com']
    start_urls = [
                'https://my.xx.com/storefinder/list/a',
                ]

    def parse(self, response):  
        rows = response.css('div.col-md-4.col-sm-6')
        for row in rows:
            item = xxItem()  
            item['name'] = rows.css('h3::text').extract()
            item['address'] = rows.css('p::text').extract() 

        return item
csv parsing scrapy row
1个回答
0
投票

return语句用于结束函数调用的执行,并将结果(return关键字后的表达式的值)"返回 "给调用者。

参考文献 联系.

因此,当你使用 return 关键字,你的代码执行就会停止。相反,你需要使用 yield 关键字。

"产量 "这个关键词有什么作用?

解决办法。

替换语句 return itemyield item 并将其移至 for loop 范围。

代码与变化。

import scrapy

from xx.items import xxItem

class QuotesSpider(scrapy.Spider):
    name = 'xx_spider'
    allowed_domains = ['www.my.xx.com']
    start_urls = [
                'https://my.xx.com/storefinder/list/a',
                ]

    def parse(self, response):  
        rows = response.css('div.col-md-4.col-sm-6')
        for row in rows:
            item = xxItem()  
            item['name'] = row.css('h3::text').extract()
            item['address'] = row.css('p::text').extract() 

            yield item

要在csv文件中存储数据,请使用命令运行您的spider。

scrapy crawl xx_spider -o output_file.csv

希望能帮到你:)

© www.soinside.com 2019 - 2024. All rights reserved.