爬虫数据的存储

爬虫数据的存储

本篇文章主要对抓取的数据进行相关的存储,完成数据持久化存储。主要是存储为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
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值