Scrapy yield逗号分隔的csv文件

时间:2017-05-28 01:47:31

标签: python scrapy

我制作了一个在线提取资料的程序,如下所示。它工作并生成csv文件。但是,如excel文件中所示,数据似乎不是逗号分隔。 如何解决此问题以使文件以逗号分隔?

import scrapy

class JPItem(scrapy.Item):
question_title = scrapy.Field() 
question_content = scrapy.Field()
question_link = scrapy.Field()
best_answer = scrapy.Field()
best_answer_link = scrapy.Field()

class JPSpider(scrapy.Spider):

name = "jp"
allowed_domains = ['detail.chiebukuro.yahoo.co.jp']

start_urls = [
    'https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q' + str(x)
    for x in range (10000000000,100000000000)
]

def parse(self, response):
    item = JPItem()

    item['question_title'] = response.css("div.mdPstd.mdPstdQstn.sttsRslvd.clrfx div.ttl h1::text").extract_first()
    item['question_content'] = ''.join([i for i in response.css("div.mdPstdQstn div.ptsQes p::text").extract()])
    item['question_link'] = ''.join(response.css("div.mdPstdQstn p:not([class]) a::text").extract())
    item['best_answer'] = ''.join([i for i in response.css("div.mdPstdBA div.ptsQes p.queTxt::text").extract()])
    item['best_answer_link'] = ''.join(response.css("div.mdPstdBA p:not([class]) a::text").extract())

    yield item

1 个答案:

答案 0 :(得分:1)

每个item属性都以列表形式返回,这就是它们在您的文件中以逗号分隔的原因。但是,您处理的最后四个项目属性不会是列表,因为您在其上使用''.join()。如果您希望每个列表项在Excel中的csv文件中填充自己的单元格,则需要分别遍历列表和yield每个列表。