Python爬虫+数据可视化+存入数据库(2)

        这里主要叙述如何将Python中的数据导入Mysql中,然后通过Python语句来进行数据库的增删查改。也就是将sql语句通过Python的pymysql库方法,来实现两个平台的信息对接。

一、准备工作

1.在Pycharm(Python版本:3.12,最新的几个版本对于普通用户来说,变化不大,所以用哪个都行)中,需要pymysql库,通过命令行输入pip install pymysql,点击Enter确认安装即可。

2.在MySQL导入SQL文件,或者将SQL文件内容复制到MySQL中运行,SQL文件内容如下:

drop database if exists qqmusic;
create database qqmusic CHARACTER SET utf8;
use qqmusic;
drop table if exists musicrank;
create table musicrank(
						  id VARCHAR(10) not null,
                          music_no  VARCHAR(10)  not null,
                          music_name VARCHAR(300),
                          music_address VARCHAR(300),
                          singer VARCHAR(200),
                          times VARCHAR(200)
                          
);

然后我们可以在MySQL中得到一张表,里面可以存放id,排行、歌名、地址、歌手以及时长信息,数据库表格信息是通过csv文件内容而设定(因为这样好搞数据交互)。

二、基本操作

        我们准备好上面环境后,就可以在Pycharm中开始设计了。大概思想就是先封装一个对象,再将csv文件的每一行信息存入这个对象,在通过SQL语句把这个对象存入MySQL

1.封装对象

        定义一个musicClass.py文件,存放以下信息,:

class Music:
    def __init__(self, id,music_no,music_name,music_address,singer,times):
        self.id = id
        self.music_no = music_no
        self.music_name = music_name
        self.music_address = music_address
        self.singer = singer
        self.times = times

2.SQL语句设计

        先进行数据库连接,然后创建游标对象(使用cursor()方法)指向这个数据库连接对象,一个光标跟踪一种数据状态。也就是通过游标对象,按照我们在Pycharm中的SQL语句,去执行MySQL中数据。其中,excute()方法是指通过游标对象执行SQL语句,commit()方法是指通过数据库连接对象提交事务,在操作数据过程中,一般都是一起连用的。

import pymysql

# 获取游标
def sqlConnection():
    conn = pymysql.connect(host="localhost", user="root", passwd="123456", database="qqmusic")
    c=conn.cursor()
    return c,conn

#添加
def sqlInsert(c,conn,mc):
    sql=f"insert into musicrank(id,music_no,music_name,music_address,singer,times) VALUES ('{mc.id}', '{mc.music_no}','{mc.music_name}', '{mc.music_address}', '{mc.singer}', '{mc.times}')"
    c.execute(sql)
    conn.commit()
    print("添加成功!")

#删除
def sqlDelete(c,conn,id):
    sql=f"delete from musicrank where id='{id}'"
    c.execute(sql)
    conn.commit()
    print("删除成功!")

#获取信息
def sqlSelect(c,conn):
    sql="select * from musicrank"
    c.execute(sql)
    # c.fetchall()是将查询的结果进行抓取
    reader=c.fetchall()
    conn.commit()
    return reader

3.csv文件读取

        使用这个with open(文件名, 模式, 编码) [as 别名]:方法可以操作文件数据,使用with关键字是为了更方便,普通方法( open(文件名, 模式, 编码) )打开文件需要用try...except...fanally来进行异常处理+资源关闭,很麻烦,所以用with。文件名是指需要操作的文件名字。模式是指操作类型,主要有'r','w','a',分别代表只读模式,只写模式(写的内容会覆盖)以及追加模式(在原有数据追加数据)。编码是指这个文件以什么编码来打开。

        打开 排行榜.csv 文件,将里面的内容提取出来

result = []
with open('排行榜.csv', 'r', encoding='utf-8') as file:
    reader = csv.reader(file)
    for row in reader:
        result.append(row)

4.数据导入数据库

        将第二步的SQL语句和第三步的数据,使用起来,这里就只用添加sql语句,感兴趣的自己去使用其他的

c, conn = sqlConnection()
for i in range(1, len(result)):
    mc = musicClass.Music(result[i][0], result[i][1], result[i][2], result[i][3], result[i][4], result[i][5])
    sqlInsert(c, conn, mc)

5.结果如下:

三、最终代码

1.musicClass.py

class Music:
    def __init__(self, id,music_no,music_name,music_address,singer,times):
        self.id = id
        self.music_no = music_no
        self.music_name = music_name
        self.music_address = music_address
        self.singer = singer
        self.times = times

2.主数据

import csv
import pymysql
from qqmusic import musicClass


# 获取游标
def sqlConnection():
    conn = pymysql.connect(host="localhost", user="root", passwd="123456", database="qqmusic")
    c=conn.cursor()
    return c,conn
#添加
def sqlInsert(c,conn,mc):
    sql=f"insert into musicrank(id,music_no,music_name,music_address,singer,times) VALUES ('{mc.id}', '{mc.music_no}','{mc.music_name}', '{mc.music_address}', '{mc.singer}', '{mc.times}')"
    c.execute(sql)
    conn.commit()
    print("添加成功!")
#删除
def sqlDelete(c,conn,id):
    sql=f"delete from musicrank where id='{id}'"
    c.execute(sql)
    conn.commit()
    print("删除成功!")
#获取信息
def sqlSelect(c,conn):
    sql="select * from musicrank"
    c.execute(sql)
    reader=c.fetchall()
    conn.commit()
    return reader



result = []
with open('排行榜.csv', 'r', encoding='utf-8') as file:
    reader = csv.reader(file)
    for row in reader:
        result.append(row)
c, conn = sqlConnection()
for i in range(1, len(result)):
    mc = musicClass.Music(result[i][0], result[i][1], result[i][2], result[i][3], result[i][4], result[i][5])
    sqlInsert(c, conn, mc)

四、补充

以csv文件为例,csv文件导入数据库一般有两种方法:

1、通过SQL的insert方法一条一条导入,适用于数据量小的CSV文件,以上就是。

2、通过load data方法导入,速度快,适用于大数据文件。有兴趣的去查找学习。

  • 17
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 豆瓣电影是众所周知的一个知名电影评分网站,其中的TOP250电影榜单更是备受关注。爬取这个榜单的数据可以帮助我们更好地了解电影市场和评价,数据方面可以更好地呈现这些数据。 首先,我们可以使用Python程序编写爬虫,抓取豆瓣电影TOP250的数据。我们可以通过分析网页源代码,选取需要的信息,例如电影名称、上映时间、豆瓣评分、评分人数、电影类型、导演、演员等信息。然后,将所有信息保存在CSV文件中。我们可以使用BeautifulSoup模块或Scrapy框架来实现爬虫程序的编写。 接下来,我们可以使用Python数据工具来对这些数据进行可处理。例如,我们可以使用matplotlib或Seaborn绘制电影评分的统计图表和线型图,了解每部电影评分的分布情况、评分人数的多寡、豆瓣评分的走向等。另外,我们也可以绘制散点图或热图,从电影类型、上映时间等角度分析不同类型电影的评分情况。我们还可以利用词云图工具呈现电影的标签云图,更直观地展示豆瓣用户对电影的评价。 总的来说,我们可以使用Python爬虫数据工具来爬取豆瓣电影TOP250榜单的数据,并且将数据以图表、统计、云图等形式进行可分析,从而更好地了解电影市场和评价。 ### 回答2: 豆瓣电影Top250是电影爱好者们都很熟悉的一个电影排行榜。为了更好地了解这个排行榜的情况,我们可以利用Python爬取豆瓣电影Top250上的电影信息,并将数据制作成可图表,以更直观地呈现数据。 首先,我们需要使用Python爬虫技术获取豆瓣电影Top250中每部电影的信息。一般来说,爬取网页数据需要用到一些第三方爬虫库,比如Requests和BeautifulSoup。使用Requests库可以向豆瓣服务器发送请求,获取Top250的网页HTML文件。接着,我们可以使用BeautifulSoup库解析HTML文件,从中获取每一部电影的名称、评分、演员、导演、简介等信息。爬取完毕后,将获取到的数据存储在MySQL或者MongoDB数据库中,方便后续对数据的处理和分析。 接下来,我们需要将获取到的数据进行数据。我们可以使用Python中的Matplotlib或者Seaborn等数据库来制作可图表。比如,我们可以生成柱状图、饼图、折线图等多种图表类型,展现Top250中电影各类别的数量分布、电影评分的分布情况、导演、演员等数据的贡献度等信息。 总之,通过Python爬取豆瓣电影Top250数据,并利用数据技术制作图表,我们可以更好地了解电影市场的情况,从中找到一些有用的数据洞察点,对后续的电影市场分析等工作提供有力支持。 ### 回答3: 随着互联网的普及和数据挖掘的发展,数据已经成为当今最流行的技术之一。而Python语言的出现,极大地促进了数据技术的发展,并且能够使数据更加高效、便捷。 Python爬取豆瓣电影Top250数据可以使用爬虫框架Scrapy,通过对网页的解析和内容抓取,将所需数据存入数据集中。数据集中存储了每个电影的名称、导演、主演、类型、上映时间、评价人数、评分等信息,这些数据可以通过Python数据工具如Matplotlib、Pandas等进行可处理。 通过数据可以得到丰富的数据分析和呈现,如: 1.不同类型电影的数量 通过Python工具可以得到不同类型电影的数量,并且可以使用饼图、柱状图等图表进行图像展示,帮助人们更好地了解豆瓣Top250电影中各类型的分布情况。 2.电影排名及评价情况 通过Python爬虫框架获取的豆瓣Top250电影可以进行排名展示及评价等数据的分析。可工具可以帮助我们通过散点图、折线图等形式直观地了解电影排名及评价情况。 3.电影时长对评分的影响 通过Python工具可处理电影时长对评分的影响。可以得出电影时长对于电影评分存在明显影响的结论,以饼图的形式将主观评价高的电影与电影时长进行对比。 Python爬取豆瓣电影Top250,通过数据工具可以使我们直观地了解到豆瓣Top250电影的分类情况、排名和评价等数据信息,同时,也可以了解到电影时长等因素对电影评价的影响,这对我们对电影的分析与推荐可以起到积极的作用,有助于我们更好地了解电影行业的情况。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值