简述:
持久化存储的方式主要分为两大类,一种是存储于文件,另一种是存储于数据库。
- 使用文件持久化存储。
支持将数据储存于任何类型的文件
存储代码举例:
fileName = word + '.josn' #添加相应的后缀
f = open(fileName,'w',encoding='utf-8')
json.dump(dict_obj,fp=f,ensure_ascii=False)
- 使用数据库持久化存储。
-
需要给项目引入数据包
安装依赖包:pip install mysqlclient
在项目中导入:import MySQLdb -
需要建立对应的数据库表
-
实现数据库持久化存储
连接数据库服务器:db = MySQLdb.connect(host, user, password, database,charset)
获取游标操作数据:db.cursor()
编写SQL语句:sql = “insert into xxx”
执行SQL:db.execute()
提交数据:db.commit()
关闭数据库:db.close()
项目举例:
爬取豆瓣中电影的名称,评分,观看人数
import requests
from lxml import html
import MySQLdb
list_move = []
def parse():
header = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36'
}
url = 'https://movie.douban.com/top250?start={}'
for i in range(0,3):
url_page = url.format(i*25)
text = requests.get(url=url_page, headers=header).text
# 初始化etree
etree = html.etree
tree = etree.HTML(text)
list_li = tree.xpath('//div[@class="article"]//li')
for li in list_li:
name = li.xpath('.//span[1]/text()')[0]
score = li.xpath('.//div[@class="star"]/span[@class="rating_num"]/text()')[0]
sumPerson = li.xpath('.//div[@class="star"]/span[4]/text()')[0]
lis =[name, score, sumPerson]
list_move.append(lis)
print(list_move)
def save_to_sql():
db = MySQLdb.connect('localhost','root','root','douban',charset='utf8')
cursor = db.cursor()
for one in list_move:
sql = "insert into movies (name,score,num) values ('%s','%s','%s')" % (one[0], one[1], one[2])
try:
cursor.execute(sql)
db.commit()
except:
db.rollback()
db.close()
if __name__ == '__main__':
parse()
save_to_sql()