猫眼数据SQLITE保存格式

猫眼数据sqlite保存

这里主要是对sqlite数据库保存架构的摸索

import requests
from requests import request, session, RequestException
import re
import sqlite3

# 使用GET请求到网站的html文件,正则表达式提取,保存为txt文件,
# 循环订立在大框架中

def main():
    parse_data = parse_one_page()  # 获取的全部数据
    print(parse_data)
    dbpath = '猫眼.db'  # 定义一个db文件
    save_dataDB(parse_data,dbpath) # 保存为sqlite文件

    return  #


# 抓取数据
def get_one_page(baseurl):

        try:
            headers = {
                'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) '
                              'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36'
            }
            response = requests.get(url=baseurl, headers=headers)
            if response.status_code == 200:  # 判断访问状态码,200代表正常访问
                return response.text  # 返回抓取到的数据

            return None
        except RequestException:  # 报错则返回空数据
            return None


# 解析数据
def parse_one_page():
    url = 'https://maoyan.com/board/4?offset='  # 猫眼网站
    datalist = []  # 定义一个接收全部数据的列表
    for i in range(0,10):
        baseurl = url + str(i * 10)  # 拼接url
        html = get_one_page(baseurl)  # 使用拼接的url去请求数据
        print(baseurl)

        pattern = re.compile('<dd>.*?board-index.*?>(\d+)</i>.*?data-src="(.*?)".*?name"><a'
                             + '.*?>(.*?)</a>.*?star">(.*?)</p>.*?releasetime">(.*?)</p>'
                             + '.*?integer">(.*?)</i>.*?fraction">(.*?)</i>.*?</dd>', re.S)  # 使用正则表达式解析,创建一个格式模板
        items = re.findall(pattern, html)  # 将模板套入对象
        for item in items:
            list = []  # 定义一个接收每一次循环数据的列表

            index = item[0]  # 排名
            list.append(index)

            image = item[1]  # 图片链接
            list.append(image)

            title = item[2]  # 电影名字
            list.append(title)

            actor = item[3]  # 演员们
            list.append(actor)

            time = item[4]  # 上映时间
            list.append(time)

            score = item[5].strip() + item[6].strip()  # 评分(实际上是两个数字的拼接)
            list.append(score)
            datalist.append(list)  # 将每一次循环的数据保存到总列表中
    return datalist




def save_dataDB(parse_data,dbpath):
    save_data02(dbpath)  # 创建数据库
    conn = sqlite3.connect(dbpath)  # 连接数据库
    cur = conn.cursor()

    for data in parse_data:
        for index in range(len(data)):
            if index == 0 or index == 5:  # 将数字区分
                continue
            data[index] = '"' + data[index] + '"'  # 使用“ ”区别数据
        # print(data)

        sql = """
            insert into cat_eye(
            "index",image,title,actor,time,score)
            values(%s)""" %",".join(data)
        print(sql)
        cur.execute(sql)
        conn.commit()
    conn.close()



def save_data02(dbpath):
    sql = '''
    create table cat_eye
        (
            id    integer
                primary key autoincrement,
            "index" varchar,
            image text,
            title varchar,
            actor text,
            time  integer,
            score numeric
        );

    '''
    conn = sqlite3.connect(dbpath)
    cursor = conn.cursor()
    cursor.execute(sql)
    conn.commit()
    conn.close()


if __name__ == '__main__':
    main()
    print("爬取完毕!!!")

execute(sql)
conn.commit()
conn.close()

if name == ‘main’:
main()
print(“爬取完毕!!!”)






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLite中,可以使用多种数据类型来存储数据。以下是一些常见的SQLite数据类型: 1. NULL:表示空值。 2. INTEGER:表示整数值。根据存储的大小,SQLite会自动选择合适的整数类型(1、2、3、4、6或8字节)。 3. REAL:表示浮点数值,使用8字节的浮点数表示。 4. TEXT:表示文本字符串,使用UTF-8或UTF-16编码存储。 5. BLOB:表示二进制数据,可以存储任意类型的数据,如图像、音频或视频。 除了这些基本的数据类型,SQLite还支持一些其他的特殊数据类型和列属性: 1. BOOLEAN:SQLite并不直接支持布尔类型,但可以使用整数类型(0表示假,1表示真)或使用TEXT类型来存储"true"和"false"字符串来模拟布尔值。 2. DATE和TIME:SQLite没有专门的日期和时间类型。通常使用TEXT或INTEGER类型来存储日期和时间信息,并结合日期和时间函数进行处理。 3. PRIMARY KEY:用于定义主键列,确保每个行都具有唯一标识符。 4. AUTOINCREMENT:用于在插入新行时自动分配唯一的整数值给主键列。 下面是一个创建表格的示例,展示了如何定义不同的数据类型和列属性: ```sql CREATE TABLE my_table ( id INTEGER PRIMARY KEY, name TEXT, age INTEGER, weight REAL, photo BLOB ); ``` 在上述示例中,`my_table`表格包含了`id`(整数)、`name`(文本)、`age`(整数)、`weight`(浮点数)和`photo`(二进制数据)列。 希望这可以帮助您了解SQLite中的数据类型。如果您有任何进一步的问题,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值