高效爬虫,用executemany方法一次性插入MySQL多条数据,带你体验飞一般的感觉

27 篇文章 0 订阅
16 篇文章 0 订阅

大家好,我是天空之城,今天给大家带来,用executemany()方法一次性插入MySQL多条数据,用元组格式保存数据,带你体验飞一般的感觉,注意括号里数据格式必须是元组的格式,字典格式好像也可以,看下一篇。
有兴趣加qq群,纯学习,1098016198。
第一步,建立表格。这两步可以合二为一。

import pymysql

conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='你的数据库密码', db='mydb', charset='utf8')

cursor = conn.cursor()


sql = """create table movies8(
        m_id int primary key auto_increment,
        movie_name varchar (100) not null,
        movie_daoyan varchar(200) null,
        movie_zhuyan varchar(110) not null,
        movie_jianjie varchar(200) null
        )"""
cursor.execute(sql)

cursor.close()
conn.close()

第二步,获取数据并插入数据。


import requests,pymysql
from bs4 import BeautifulSoup


headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0',
           'Referer': 'http://www.mtime.com/top/tv/top100/',
           'Cookie': '_userCode_=202052221483601; _userIdentity_=202052221485994; DefaultCity-CookieKey=627; DefaultDistrict-CookieKey=0; _tt_=6A0D5B7802C889B92ADDF4B9DA5330DC; Hm_lvt_6dd1e3b818c756974fb222f0eae5512e=1588428109,1588460637; __utma=196937584.392826187.1588428110.1588463461.1588470412.4; __utmz=196937584.1588428110.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); waf_cookie=14c7c021-c3bd-4e2a998ff60044124738825863a8e64fcc61; Hm_lpvt_6dd1e3b818c756974fb222f0eae5512e=1588470414; __utmc=196937584; _ydclearance=e11e8c3d48a0aef51a6ece4e-dd11-4511-ae6f-98e6a44ceddd-1588477611; __utmb=196937584.4.10.1588470412; __utmt=1; __utmt_~1=1'
           }


def get_data():
    
    list_all = []

    for i in range(2,5):
        res = requests.get(headers=headers, url='http://www.mtime.com/top/tv/top100/index-{}.html'.format(str(i)))
        print(res.status_code)
        res.content.decode('utf-8')
        soup = BeautifulSoup(res.text, 'html.parser')
        items = soup.find('div', class_='top_list')
        list = items.find_all('li')
        for film in list:
            name1 = film.find('h2').text#名称
            abc = film.find_all('p')
            daoyan = abc[0].text.strip()#导演
            zhuyan = abc[1].text.strip()#主演
            jianjie1 = film.find('p', class_="mt3")#注意这里还没有加text,后面有判断
            if jianjie1 !=None:
                jianjie1=jianjie1.text.strip()
            else:
                jianjie1=''
            list_all.append((name1,daoyan,zhuyan,jianjie1))
    print(list_all)
    return list_all
   

def save_data(data):
    conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='你的数据库密码', db='mydb', charset='utf8')

    cursor = conn.cursor()

    sql = 'insert into movies8 (movie_name, movie_daoyan, movie_zhuyan,movie_jianjie) values (%s,%s,%s,%s)'

    cursor.executemany(sql,data)

    conn.commit()
    cursor.close()
    conn.close()

if __name__ == '__main__':
    mess=get_data()
    save_data(mess)

数据库截图

在这里插入图片描述

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值