爬虫持久化存储

简述:
持久化存储的方式主要分为两大类,一种是存储于文件,另一种是存储于数据库。

  1. 使用文件持久化存储。
    支持将数据储存于任何类型的文件
    存储代码举例:
    fileName = word + '.josn' #添加相应的后缀
    f = open(fileName,'w',encoding='utf-8')
    json.dump(dict_obj,fp=f,ensure_ascii=False)
  1. 使用数据库持久化存储。
  • 需要给项目引入数据包
    安装依赖包: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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liaoMITC

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值