您的位置 首页 > 数码极客

如何将爬取的数据储存为json文件

在Scrapy中的数据可以通过一些方法来生成json或csv文件。

第一种方法是使用Feed Exports。你可以通过从命令行设置文件名和所需格式来运行爬虫并存储数据。

如果你希望自定义输出并在爬虫运行时生成结构化Json或CSV。你可以使用Item Pipeline在管道中设置输出属性,而不是从命令行设置。

使用Feed Export导出

你可以使用scrapy crawl myspider命令从命令行运行你的scraper 。如果要创建输出文件,则必须设置要使用的文件名和扩展名:

scrapy crawl myspider -o da scrapy crawl myspider -o da scrapy crawl myspider -o da

Scrapy有自己的内置工具来生成json,csv,xml和其他序列化格式。

如果要指定生成的文件的相对路径或绝对路径,或者从命令行设置其他属性,也可以执行此操作:

scrapy crawl reddit -s FEED_URI='/home/user/folder/myda' -s FEED_FORMAT=csv scrapy crawl reddit -s FEED_URI='myda' -s FEED_FORMAT=json

使用Item Pipeline导出

Scrapy Item Pipeline是一种处理数据的通用工具。典型的用法是清理html,验证已删除的数据,删除重复数据并将数据存储在数据库中。如果你想要一个方便且可自定义的过程来存储数据,则可以使用管道。

你需要使用JsonItemExporter:

from import JsonItemExporter class JsonPipeline(object): def __init __(self): = open(“books.json”,'wb') = JsonItemExporter(,encoding ='utf-8',ensure_ascii = False) .start_exporting() def close_spider(self,spider): .finish_exporting() .close() def process_item(self,item,spider): .export_item(item) return item

除了JsonItemExporter,还有CsvItemExporter,它与CSV的工作方式相同,但你必须调用CsvItemExporter:

class CsvPipeline(object): def __init __(self): = open(“booksda”,'wb') = CsvItemExporter(,unicode) .start_exporting() def close_spider( self,spider): .finish_exporting() .close() def process_item(self,item,spider): .export_item(item) return item

请注意,在csv文件中,默认情况下,字段用“,”(逗号)分隔。如果你的字段包含带逗号的文本,这会破坏整个结构,所以你可能需要创建一个修复此问题的函数:

def create_valid_csv(self, item): for key, value in i(): is_string = (isinstance(value, basestring)) if (is_string and ("," in value.encode('utf-8'))): item[key] = "\"" + value + "\""

在导出项目之前调用此函数,以便ItemExporter相应地识别数据中的逗号。

配置

告诉scrapy你使用的管道非常重要,否则你的管道将不会被调用。

将下面的代码添加到Scrapy项目中的中:

ITEM_PIPELINES = { 'Reddi;:300, 'Reddi;:500, }

这些数字的含义是管道执行的优先级。在此示例中,JsonPipeline将执行得更快,但是数字必须在0-1000的范围内。

如果觉得文章对你有用,或是觉得文章不错,请关注小编,后续推出更多精彩内容哟~

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“如何将爬取的数据储存为json文件”边界阅读