今天从拉勾网爬取职位信息准备作数据分析,因为想用Excel做数据可视化,遂决定将爬取信息保存为csv文件,再导入excel中。
scrapy 自带的 exporters 类下的方法 CsvItemExporter 可以用来保存Item数据为csv文件。
scrapy.exporters.
CsvItemExporter使用方法参看官方文档: Item Exporters
class LgspiderPipeline(object):
# 创建接收文件,初始化exporter属性,然后启动start_exporting(),接收Item
def open_spider(self, spider):
self.file = open("lagoudata13.csv", "wb") # lagoudata13.csv为将要写入的文件名
self.exporter = CsvItemExporter(self.file,
fields_to_export=['positonId','city', "companyFullName", 'education','positionName','jobNature',
'job_detail','jobInfo','jobAttract','workYear','salary','CreateTime']) # fields_to_export 为Items字段列表
self.exporter.start_exporting()
def process_item(self, item, spider):
self.exporter.export_item(item)
return item
# 结束exporter的exporting,关闭文件
def close_spider(self, spider):
self.exporter.finish_exporting()
self.file.close()
完了之后新建Excel文档,数据——>获取外部数据下的 自文本——>选上csv文件——>三步设置
如果爬取的信息里有'context'文本,第二步文本识别符选上'',会将''里的内容当作整体不分割。
正常情况下来导入excel文件就成功了。
而我喜闻乐见的出现了下面的错误: 此文本文件包含的数据无法放置在一个工作表中
我总共不到1500行信息啊,只导入了一个表头。
发生这种情况原因是:爬取保存的csv文件中含有大量的无用换行符(具体原因我也不知道,如你知道,请不吝赐教)
而这种换行符在我用txt、editplus查看时均看不出来,最后用sublime打开时才看出:
可以看到同一个文本上面存在大量空行,而下面文本则正常,复制下面部分文档做导入测试正常可说明这点。
最后利用ctrl+H 替换掉多余换行符,再导入到Excel中,一切正常。
一个坑让我装了三个版本的office,耗了我两个多小时,希望对你有所帮助,over!