爬虫基本工系列之--数据存储

Posted 一腔诗意醉了酒

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了爬虫基本工系列之--数据存储相关的知识,希望对你有一定的参考价值。


1. 常见的数据存储介质

  1. 文件

适合存储具有时效性的数据,如股票行情,商品信息和排行榜等

  1. 关系型数据库
  2. 非关系型数据库

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 写入

  • 总体思路
  1. 创建临时Excel对象
  2. 添加工作表
  3. 写入数据(注意索引从0开始)
  4. 保存
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 读取

  • 总体思路
  1. xlrd生成Workbook对象
  2. 选择工作表
  3. 读取信息
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)

以上是关于爬虫基本工系列之--数据存储的主要内容,如果未能解决你的问题,请参考以下文章

爬虫基本工系列之--selenium库的使用

Python爬虫之Scrapy框架系列——XXTop250电影所有信息同时存储到MySql数据库

Python爬虫之Scrapy框架系列——XXTop250电影所有信息同时存储到MySql数据库

Python爬虫之Scrapy框架系列——XXTop250电影所有信息同时存储到MySql数据库

爬虫系列

爬虫系列之mongodb