Python爬虫(七)-sqlite存储
项目代码示例
def initDB(dbPath):
createSql = """
create table mwhls
(
id integer primary key autoincrement,
title varchar,
link text,
information text,
view numeric,
image text
)
"""
connect = sqlite3.connect(dbPath) # 数据库连接
cursor = connect.cursor() # 游标获取
cursor.execute(createSql) # 语句执行
connect.commit() # 提交执行操作
connect.close() # 关闭数据库连接
def saveDataDB(dataList, savePath):
dbPath = savePath + "mwhls.top.db" # 初始化数据库路径
initDB(dbPath) # 初始化数据库
connect = sqlite3.connect(dbPath) # 连接数据库
cursor = connect.cursor() # 游标获取
for data in dataList: # 对每篇文章数据进行数据库插入
for index in range(len(data)): # 将非整形数据添加"",防止执行出错
if index != 3: # 第4个位置,即列表中序号3的地方,存放的是阅读量,是整形,因此不能添加""
data[index] = '"' + data[index] + '"'
insertSql = '''
insert into mwhls(
title, link, information, view, image)
values(%s)
''' % (",".join(data)) # 插入语句,%后的是插入的值,即将列表用,分割,然后拼成字符串,因此使用join
cursor.execute(insertSql) # 语句执行
connect.commit() # 语句提交
connect.close() # 数据库连接关闭
initDB代码解释
initDB是初始化数据库的函数。
第一个id的autoincrement是自增,就免得自己标号。
initDB的其他语句没有什么讲的必要,在上一节有讲解,即便不看照抄也能用。
saveDataDB代码解释
dbPath和之前Excel表格的路径一样,也是为了方便改存储路径,实际的dbPath就是dbpath == ".\\mwhls.top.db"
对于插入数据库这个操作,项目是一整行的插入,因此如果有25篇文章,插入25次即可,也就是第一个for循环的意思。
而插入语句中,values的值每次都不一样,但格式是确定的,就是 values("data1", "data2", "data3", int1, int2, "data4")
现在就是找规则了,每个数据都由一个 , 分割
因此对dataList中的每个data列表用 join函数即可。
在代码上的表现就是 ",".join(data)
之后使用字符串的 %s 这个参数,将拼接好的data字符串插入进数据库语句,
在代码上的表现就是 sql = "右边是数据-> %s" % (",".join(data))
整条语句的框架确定好了,之后就是每个数据要匹配格式,
即text、varchar两个格式需要使用 双引号 括起来,
因此使用data = '"' + data + '"'
进行修改。
但int格式是不需要修改的,因此在修改时要加判断,而data中的第4个数据就是int格式的,因此index == 3时跳过即可。
部分error
如果出现 table exist类似的错误,将数据库删掉就好了
如果出现 : 冒号这个东西,就是数据库中的格式对不上,字符串一定要用双引号括起来,而数值形式的不能。
如果还碰到其他错误请在文章下留言(请到mwhls.top的这篇文章中留言,csdn或者其他地方的文章一般不会更新)。
共有 0 条评论