爬虫基本工系列之--数据存储
Posted 一腔诗意醉了酒
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了爬虫基本工系列之--数据存储相关的知识,希望对你有一定的参考价值。
1. 常见的数据存储介质
- 文件
适合存储具有时效性的数据,如股票行情,商品信息和排行榜等
- 关系型数据库
- 非关系型数据库
2. CSV数据的写入与读取
2.1 什么是csv
CSV是一种通用的、相对简单的文件格式,被用户、商业和科学广泛应用。最广泛的应用是在程序之间转移表格数据,而这些程序本身是在不兼容的格式上进行操作的(往往是私有的和/或无规范的格式)。因为大量程序都支持某种CSV变体,至少是作为一种可选择的输入/输出格式
2.2写入
'''
代码功能:csv文件写入
时间:@Date: 2021-06-13 01:11:19
'''
import csv
'''
1. 若存在文件,则打开csv文件; 若不存在,则新建文件
2. 如果不设置 newline='' ,则每行数据会隔一行空白
'''
csvfile = open('csv_test.csv', 'w', newline='')
# 将文件加载到csv对象中
writer = csv.writer(csvfile)
# 单行写入
writer.writerow(['姓名', '年龄', '电话'])
data = [
('A','18','10086'),
('B','19', '10010')
]
# 多行写入
writer.writerows(data)
# 关闭csv对象
csvfile.close()
2.3 读取
'''
代码功能:csv文件读取
时间:@Date: 2021-06-13 01:12:06
'''
import csv
csvfile = open('csv_test.csv', 'r')
# 1. 以列表的形式输出
# reader = csv.reader(csvfile)
# # print(reader) # <_csv.reader object at 0x046ED258>
# rows = [row for row in reader]
# print(rows)
# [['姓名', '年龄', '电话'], ['A', '18', '10086'], ['B', '19', '10010']]
# 2. 以字典的形式输出,第一行作为字典的键
reader = csv.DictReader(csvfile)
rows = [row for row in reader]
print(rows)
# [{'姓名': 'A', '年龄': '18', '电话': '10086'}, {'姓名': 'B', '年龄': '19', '电话': '10010'}]
'''
如果要获取某一行数据,在循环rows,对循环里面的项进行判断筛选符合条件的数据即可
注意,返回的是字典还是列表
'''
3. Excel写入
- 依赖包
python -m pip install xlwt
python -m pip install xlrd
3.1 写入
- 总体思路
- 创建临时
Excel
对象 - 添加工作表
- 写入数据(注意索引从0开始)
- 保存
import xlwt
# 新建一个Excel文件
wb = xlwt.Workbook()
# 新建一个sheet
ws = wb.add_sheet('python', cell_overwrite_ok=True)
# 写入数据 wb.write(行, 列, 内容 )
for i in range(0,7):
for j in range(5):
ws.write(i,j, i+j)
# 保存文件
wb.save('file.xls')
- 写入的时候,还有很多骚操作可以自行百度哦
3.2 读取
- 总体思路
xlrd
生成Workbook
对象- 选择工作表
- 读取信息
import xlrd
wb = xlrd.open_workbook('file.xls')
print("工作表的总数:", wb.nsheets)
# 1.通过索引获取工作表
# ws = wb.sheets()[0]
# ws = wb.sheet_by_index(0)
# 2. 通过名字获取
ws = wb.sheet_by_name('python')
print("获取到的工作表",ws) # 获取到的工作表 Sheet 0:<python>
nrows = ws.nrows
ncols = ws.ncols
print(nrows) # 7
print(ncols) # 5
# print("1行2列的数据", ws.cell(1,2)) # 1行2列的数据 number:3.0
print("1行2列的数据", ws.cell(0,1).value) # 1行2列的数据 number:3.0
# 注意行列的索引都是从0开始
4. word的写入与读取
- 依赖包
python -m pip install python-docx
写入
from docx import Document
from docx.shared import Inches
document = Document()
# 添加标题, 0代表标题类型
document.add_heading('python',0)
document.add_paragraph("helloworld")
# 保存
document.add_page_break()
document.save('./test.docx')
读取
import docx
text = '\\n'
try:
doc = docx.Document('./test.docx')
paragraphs = doc.paragraphs
print(len(paragraphs)) # 3
for p in paragraphs:
text += p.text+'\\n'
except:
print('打开文件失败')
print("text=",text)
以上是关于爬虫基本工系列之--数据存储的主要内容,如果未能解决你的问题,请参考以下文章
Python爬虫之Scrapy框架系列——XXTop250电影所有信息同时存储到MySql数据库
Python爬虫之Scrapy框架系列——XXTop250电影所有信息同时存储到MySql数据库