爬虫数据的存储
本篇文章主要对抓取的数据进行相关的存储,完成数据持久化存储。主要是存储为csv格式文件,MySQL数据库,MongoDB数据库。
csv文件存储
将爬取的数据存储到csv文件中。
使用流程:
1、导入模块
2、打开csv文件
3、初始化写入对象
4、写入数据(参数为列表)
import csv
with open('film.csv','w') as f:
writer = csv.writer(f)
writer.writerow([])
示例代码:
这里介绍了单行写入和多行写入
**# 单行写入(writerow([]))**
import csv
with open('test.csv','w',newline='') as f:
writer = csv.writer(f)
writer.writerow(['张三','36'])
writer.writerow(['王五','25'])
**# 多行写入(writerows([(),(),()]**
# newline='':在windows中默认会添加1个空行,所以加入newline=''参数
import csv
with open('test.csv','w',newline='') as f:
writer = csv.writer(f)
writer.writerows([('a','36'),('b','25'),('c','30')])
练习相关代码:
***#单行写入***
# 存入csv文件 - writerow()
def write_html(self,film_list):
with open('film.csv','a') as f:
# 初始化写入对象,注意参数f别忘了
writer = csv.writer(f)
for film in film_list:
L = [
film[0].strip(),
film[1].strip(),
film[2].strip()[5:15]
]
# writerow()参数为列表
writer.writerow(L)
#----------------------------------------------------------------------
#多行写入
# 存入csv文件 - writerows()
def write_html(self,film_list):
L = []
with open('film.csv','a') as f:
# 初始化写入对象,注意参数f别忘了
writer = csv.writer(f)
for film in film_list:
t = (
film[0].strip(),
film[1].strip(),
film[2].strip()[5:15]
)
L.append(t)
# writerows()参数为列表
writer.writerows(L)
注意:列表里面套的是元组
数据持久化存储 - MySQL数据库
这里有很多种方法我介绍的是最简单的方法。
在数据库中建库建表
# 连接到mysql数据库
mysql -h127.0.0.1 -uroot -p123456
# 建库建表
create database maoyandb charset utf8;
use maoyandb;
create table filmtab(
name varchar(100),
star varchar(300),
time varchar(50)
)charset=utf8;
使用pymysql和pacharm进行交互
#单条数据的插入
import pymysql
# 创建2个对象
db = pymysql.connect('localhost','root','123456','maoyandb',charset='utf8')
cursor = db.cursor()
# 执行SQL命令并提交到数据库执行
# execute()方法第二个参数为列表传参补位
ins = 'insert into filmtab values(%s,%s,%s)'
cursor.execute(ins,['张三','李四','1993'])
db.commit()
# 关闭
cursor.close()
db.close()
#----------------------------------------------------------------------
#多条数据的插入executemany
import pymysql
# 创建2个对象
db = pymysql.connect('192.168.153.137','tiger','123456','maoyandb',charset='utf8')
cursor = db.cursor()
# 抓取的数据
film_list = [('月光宝盒','周星驰','1994'),('大圣娶亲','周星驰','1994')]
# 执行SQL命令并提交到数据库执行
# execute()方法第二个参数为列表传参补位
cursor.executemany('insert into filmtab values(%s,%s,%s)',film_list)
db.commit()
# 关闭
cursor.close()
db.close()
MongoDB数据库
MongoDB和MySQL之间的区别:
MongoDB是一个基于磁盘的非关系型(key-value)数据库,value为json串
MySQL: 库 表 表记录
Mongo: 库 集合 文档
import pymongo
# 1.数据库连接对象
conn=pymongo.MongoClient('localhost',27017)
# 2.库对象
db = conn['库名']
# 3.集合对象
myset = db['集合名']
# 4.插入数据
myset.insert_one({字典})
mongodb常用的命令:
1、mongo # 进入到mongodb数据库
2、show dbs # 查看所有库
3、use 库名 # 切换库
4、show collections # 查看当前库中所有集合
5、db.集合名.find().pretty() # 格式化输出文档
6、db.集合名.count() # 统计集合中文档个数
7、db.dropDatabase() # 删除库
create by 0125