Python爬虫理论 | (4) 数据存储

关于爬虫数据存储问题,通常可以有三种选择:

1.文本文件(txt,json)或excel文件(csv,xlsx)

           优势:使用方便,不需要第三方支持 

                       劣势:健壮性差,扩展性差

2.数据库(mysql,mongoDB,redis,oracle…)

           优势:良好的扩展性,使用广泛

                       劣势:需要第三方支持,对技术有一定要求

3.文件系统(hadoop)

                       更自由,但技术要求会更高

接下来,我们将就上述几个常用的数据存储方式进行学习。

目录

1. 文件存储

 1.1 txt、json

1.2 csv、excel

2. 数据库存储

2.1 MySQL

2.2 MongoDB

3. 实战


1. 文件存储

读写文件是最常见的IO操作。Python内置了读写文件的函数。

在磁盘上读写文件的功能实际上是由操作系统提供的,读写文件就是请求操作系统打开一个文件对象,然后通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件)。

1)打开文件

使用Python内置的open()函数,传入文件名和标示符:f = open('test.txt', 'r')。如果文件不存在,open()函数就会抛出一个IOError的错误。

2)读文件

调用read()方法可以一次读取文件的全部内容,Python把内容读到内存,用一个str对象表示:f.read()

3)写文件

写文件函数:f.write(‘Hello, world!’) 可以将字符串写入到打开的文件中,但通常不会立刻写入磁盘,而是放到内存缓存起来,在调用close()方法时,才把没有写入的数据全部写入磁盘。

4)关闭文件

无论是读还是写,文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源,并且同一时间能打开的文件数量是有限的:f.close()

 

由于文件读写时都有可能产生IOError,一旦出错,后面的f.close()就不会调用。所以,为了保证无论是否出错都能正确地关闭文件,使用try ... finally来实现:

try:
    f = open('test.txt', 'r')
    print(f.read()) 			#输出test.txt中的全部内容
finally:
    if f:
        f.close()

但是每次都这么写实在太繁琐,所以,Python引入了with语句来自动调用close()方法:

with open('test.txt', 'a', encoding='utf-8') as f:
    print(f.read())
    f.write(data)

 1.1 txt、json

  • txt文件
with open('data.txt','a',encoding='utf-8') as f:

如果文件很小,read()一次性读取最方便.

如果不能确定文件大小,反复调用read(size)比较保险(每次读size个字符)

如果是配置文件,调用readlines()最方便;(按行读,存储到列表中,列表的每一个元素对应文件的一行)

如果是大文件,调用readline()最方便。(读取文件第一行)

标识符:

 主要方法:

注意:如果文件以a或a+的模型打开,每次进行写操作时,文件操作标记会自动返回到文件末尾,进行追加。

实例:

#将字符串"hello world"和"I love python"追加到data.txt中
data1 = "hello world" 
data2 = "I love python"
with open('data.txt', 'a', encoding='utf-8') as f:
    f.write(data1 + "\n")
    f.write(data2 + "\n")
#读取data.txt中前3个字符
with open('data.txt', 'r', encoding='utf-8') as f:
    print(f.read(3)) 		#hel
#读取data.txt中第一行字符
with open('data.txt', 'r', encoding='utf-8') as f:
    print(f.readline())  	#hello world
#读取data.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值