Python爬虫(七)-sqlite存储

Python爬虫入门目录

项目代码示例

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或者其他地方的文章一般不会更新)。

成果展示

You may also like...

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注