4.数据存储
利用爬虫爬取数据之后,进行存储。可用以下几种方式进行存储。
文本存储
TXT 文件存储
实例
利用open()方法打开一个文本文件,并获取一个文件操作的对象
import requests
from pyquery import PyQuery as pq
url = "https://www.zhihu.com/explore"
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
}
response = requests.get(url,headers=headers)
content = response.text
# pq解析
doc = pq(content)
items = doc('.explore-tab .feed-item').items()
for item in items:
question = item('.question_link').text()
author = item('.avatar-link').text()
answer = pq(item.find('.content').html()).text()
with open('explore.txt','a',encoding='utf-8') as f:
f.write('\n'.join([question,author,answer]))
f.write('\n'+'='*50+'\n')打开方式
写法
有两种打开文件的方法
文件会自动关闭,不需要再去调用close()方法
另一种需要调用close()方法,关闭打开的文件
JSON文件存储
说明
Json,全称为JavaScript Object Notation,即JavaScript对象标记。
json格式:
取Json
通过json库实现对json文件的读写操作,调用json库的loads()方法将Json文本字符串转为Json对象,可以通过dumps()方法将Json对象转为文本字符串
运行结果:
注意: Json 的数据需要用双引号来包围,不能使用单引号,不然会抛出如下错误
从json文本中读取内容
运行结果:
输出json
利用dumps()方法将json对象转化为字符串,然后使用write()方法写入文本中
如果json中包含中文字符,为了保证输出正文,需要指定一个参数ensure_ascii=False,另外还需要指定文件输出的编码
CSV文件存储
说明
CSV,全称叫做Comma-Separated Values,即逗号分隔符或字符分隔符
写入
通过open()方法写入并创建一个csv文件,调用csv库的writer()方法初始化一个写入对象,传入该语柄,然后调用writerow()方法传入每行的数据即可完成写入
注意:如果不带newline=‘’,会发现也能写入结果,但是每行内容之间总是会多出一个空行
如果想修改列与列之间的分隔符可以传入delimiter参数
默认的分隔符逗号(,)会被换成delimeter参数设置的分隔符
可以同时传入多行,需要使用witerrows()方法
注意:是writerrows而不是writerow
以字典的形式写入csv文件
追加csv文本内容
注意这里就不同调用writeheader()方法,不然会将头部信息一并写入
若将中文写入csv文件中,需要指定编码格式
利用pandas库写入csv文件
注意,字典的键值对中值的类型是列表形式
读取
运行结果:
利用pandas中read_csv()方法将数据从csv中读取出来
运行结果:
数据库
关系数据库
非关系数据库
ORM模型
最后更新于
这有帮助吗?
