用解析器解析出数据之后,接下来就是数据存储。保存的形式可以多种多样,最简单的形式是直接保存为本地文件,如TXT,JSON,CSV等。另外,还可以保存到数据库中,如关系型数据库Mysql,非关系型数据库MongoDB,Redis等
TXT文本存储
这里是用requests提取知乎的“发现”页面,然后将热门话题的问题,回答者,答案全文提取出来,然后利用python提供的open()方法打开一个文本文件,获取一个文件操作对象,这里赋值为file,接着利用file对象的write()方法将提取的内容写入文件,最后调用close()方法将其关闭,这样抓取的内容即可成功写入文本中。
JSON文件存储
JSON,全称为JavaScript Object Notation,也就是JavaScript对象标记,它通过对象和数组的组合来表示数据
这里是将loads()方法将字符串转为JSON对象。如果想要获取元素的值,可以使用如下:
这里使用get获取内容的时候,如果键名不存在,不会报错,会返回None,而且里面也可以传入第二个参数,当没有找到键值对的时候,会返回第二个参数
需要注意的是:JSON数据需要用双引号来包围,不能使用单引号,会出现错误
读取JSON内容
这里可以使用dumps()方法将JSON对象转为字符串
如果在JSON数据中有文字,可使用如下方法进行存储
encoding=“utf-8”是将中文字符变成unicode字符,然后转为中文的时候需要使用ensure_ascii=False
CSV文件存储
如果要修改列与列之间的分隔符,可以传入delimiter参数,如下分隔符为空格
如果想要同时写入多行,可以使用writerows()方法同时写入多行,此时参数为二维列表
一般情况下,爬虫爬取的都是结构化数据,我们一般用字典表示。
这里先定义3个字段,用fieldnames表示,然后传给DictWriter来初始化一个字典写入对象,接着调用writeheader()方法先写入头信息,然后调用writerow()传入相应字典即可。
csv内容读取