2017-05-28 39 views
0

我已经制作了一个程序来在线提取材料,如下所示。它的工作原理并生成csv文件。但是,数据似乎不像在excel文件中看到的那样是逗号分隔的。 我该如何解决这个问题,使文件被逗号分隔?Scrapy输出逗号分隔的csv文件

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

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

+0

感谢您的回答。但是,我不知道如何修改它。你是否想要逐个增加yield ['xxx']会解决这些问题? –

+0

如果您希望在电子表格中的每行都有自己的行,您可以在'for'循环中单独'yield'每个元素,遍历所收集的参数列表。 – FiscalTwinkie