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中读取出来

运行结果:

数据库

关系数据库

Mysql

非关系数据库

MongoDB

Redis

ORM模型

SQLAlchemy

最后更新于

这有帮助吗?