2017-05-28 61 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