使用Python连接MySQL数据库

本篇文章使用python中的pymysql库连接MySQL数据库,并完成建表,数据写入和查询的过程。为了保证内容的完整性,我们将内容分为两个 阶段,***阶段简单介绍数据的爬取过程。看过之前爬虫文章的同学请直接忽略。第二阶段介绍将爬去的数据写入MySQL数据库的过程。

1,使用python抓取并提取数据

***阶段介绍数据爬取过程,首先导入所需的库文件,主要包括requests,re和pandas三个库。具体作用在注释中进行了说明,这里不再赘述。

  1. #导入requests库(请求和页面抓取) 
  2. import requests 
  3. #导入正则库(从页面代码中提取信息) 
  4. import re 
  5. #导入科学计算库(拼表及各种分析汇总) 
  6. import pandas as pd 

设置爬取请求中的头文件信息。

  1. #设置请求中头文件的信息 
  2. headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64  
  3. Safari/537.11', 
  4. 'Accept':'text/html;q=0.9,*/*;q=0.8'
  5. 'Accept-Charset':'ISO-8859-1,utf-8;q=0.7,*;q=0.3'
  6. 'Connection':'close'
  7. 'Referer':'https://www.baidu.com/' 

开始抓取数据,并查看抓取到的网页内容。这里我们所需要的数据还在页面源码中,需要使用正则表达式进行提取。

  1. #抓取并保存页面信息 
  2. r=requests.get('http://www.p2peye.com/shuju/ptsj/',headers=headers) 
  3. html=r.content 
  4. #对抓取的页面进行编码 
  5. html=str(html, encoding = "GBK"
  6. #查看抓取的页面源码 
  7. html 

 

使正则表达式从抓取到的网页源码中提取所需数据。这里我们一共提取9个字段。

  1. #使用正则提取title字段信息 
  2. title=re.findall(r'"return false".*?title="(.*?)"',html) 
  3. #使用正则提取total字段信息 
  4. total=re.findall(r'"total">(.*?)万<',html) 
  5. #使用正则提取rate字段信息 
  6. rate=re.findall(r'"rate">(.*?)<',html) 
  7. #使用正则提取pnum字段信息 
  8. pnum=re.findall(r'"pnum">(.*?)人<',html) 
  9. #使用正则提取cycle字段信息 
  10. cycle=re.findall(r'"cycle">(.*?)月<',html) 
  11. #使用正则提取plnum字段信息 
  12. p1num=re.findall(r'"p1num">(.*?)人<',html) 
  13. #使用正则提取fuload字段信息 
  14. fuload=re.findall(r'"fuload">(.*?)分钟<',html) 
  15. #使用正则提取alltotal字段信息 
  16. alltotal=re.findall(r'"alltotal">(.*?)万<',html) 
  17. #使用正则提取captial字段信息 
  18. capital=re.findall(r'"capital">(.*?)万<',html) 

查看其中一个字段的信息,这里我们查看平台名称title的提取结果。

  1. #查看title字段信息 
  2. title 

 

到这里***阶段的数据爬取工作完成了,现在我们有9个字段的数据,在下一阶段中我们将连接MySQL数据库,并将这9个字段的数据写到数据库里。

2,连接MySQL数据库写入并读取数据

在第二阶段,我们使用python的pymysql库连接MySQL数据库。如果你是***次使用这个库需要先通过pip install pymysql进行安装,然后导入pymysql库文件。

  1. #导入pymysql库 
  2. import pymysql 

首先连接MySQL数据库,这里需要输入数据库的ip地址,用户名,密码,数据库名称,端口号等信息。我在这里只简单些了ip地址,用户名和数据库名称。每个参数的内容请按你数据库的实际信息进行填写。

  1. #打开数据库连接 
  2. db = pymysql.connect("192.168.0.1","root","","shuju_test" ) 

使用 cursor()创建一个游标对象

  1. # 使用 cursor() 方法创建一个游标对象 cursor 
  2. cursor = db.cursor() 

在数据库中创建一个包含9个字段的数据表,用于写入数据。这里具体分为两步,***步写出创建数据表的SQL语句。第二步使用execute()执行SQL语句

  1. #创建一个表 
  2. sql1 = "CREATE TABLE wdty7( title varchar(255), total varchar(255), rate varchar(255), people_num varchar(255), cycle  
  3. varchar(255), people_lend_num varchar(255), full_load varchar(255), all_total varchar(255), capital varchar(255)) " 
  4.   
  5. # 使用 execute() 方法执行 SQL 语句 
  6. cursor.execute(sql1) 

 

创建完数据表后,开始写入数据,这里我们使用for循环向数据表中逐条写入9个字段的数据。

  1. #向表中创建新的记录 
  2. for i in range(len(title)): 
  3. sql="INSERT INTO `wdty6`(`title`, `total`, `rate`, `people_num`, `cycle`, `people_lend_num`, `full_load`, `all_total`,  
  4. `capital`)VALUES ( %s, %s, %s, %s, %s, %s, %s, %s, %s);" 
  5. values=(title[i].encode("utf-7").decode("latin1"),total[i],rate[i],pnum[i],cycle[i],p1num[i],fuload[i],alltotal  
  6. [i],capital[i]) 
  7. cursor.execute(sql,values
  8. db.commit() 

创建一个查询语句并使用execute()方法执行查询。

  1. #设置查询语句 
  2. sql1="SELECT * FROM wdty6 where cycle>0.6;" 
  3.   
  4. # 使用 execute() 方法执行 SQL 查询  
  5. cursor.execute(sql1) 

 

使用fetchall()获取刚才写入的所有9个字段的数据,并保存在data中。

  1. #使用fetchall()方法获取所有数据 
  2. data = cursor.fetchall() 

将data中的数据转为pandas的DataFrame格式。

  1. #将获取数据 
  2. import pandas as pd 
  3. columns=["title""total""rate""people_num""cycle""people_lend_num""full_load""all_total""capital"
  4. df = pd.DataFrame(list(data),columns=columns) 

查看从数据库中提取的数据,这里有个问题,平台名称title字段中的中文在写入数据库后变成了乱码,应该是编码转换的问题。目前还没有找到解决办法。如有知道解决办法的朋友请赐教。

 

  1. #查看数据表  
  2. df.head() 

 

***,完成所有操作后关闭数据库的连接。

 

  1. # 关闭数据库连接 
  2. db.close() 

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/299582.html<

(0)
管理的头像管理
上一篇2025-05-23 11:33
下一篇 2025-05-23 11:34

相关推荐

  • 云服务器和云虚拟主机怎么选?云服务器和虚拟主机区别

    云服务器适合业务增长快、需弹性扩展的场景,而云虚拟主机适合预算有限、技术门槛低的小型静态网站或测试环境,二者核心区别在于资源独享性与运维复杂度,核心差异解析:从底层架构到使用体验很多人容易混淆这两者,觉得它们都是“买空间建站”,它们的底层逻辑完全不同,云服务器(ECS)就像是你租了一整栋别墅,水电网络独立,你想……

    2026-06-29
    0
  • 赣州智慧旅游招聘是真的吗?赣州旅游人才招聘信息

    中级岗位(3-5年经验)月薪范围通常在6000-10000元,这类岗位需要独立负责项目模块,如独立运营一个抖音账号,或维护一个景区小程序的功能迭代,具备成功案例的候选人议价能力较强,高级岗位(5年以上经验)月薪范围通常在10000-20000元,部分核心管理岗可达更高,这类人才需要具备战略规划能力,如制定整个景……

    2026-06-29
    0
  • 赣州智能物联网车位锁如何管理?智能车位锁管理系统多少钱

    赣州智能物联网车位锁管理的核心在于通过云端平台实现远程控锁、状态实时监控及自动计费,彻底解决传统车位“被占难管”与“找位难”的痛点,在赣州这样的城市,随着机动车保有量的持续增长,老旧小区、商业综合体以及私人固定车位的资源矛盾日益凸显,传统的机械地锁或简易遥控锁,不仅操作繁琐,更无法实现数据化管理,引入智能物联网……

    2026-06-29
    0
  • 赣州智能消防栓好用吗,智能消防栓多少钱一个

    赣州智能消防栓通过物联网技术实现实时监测与远程报警,能显著降低火灾响应时间并提升城市消防安全管理水平,是目前智慧城市建设中不可或缺的基础设施,赣州智能消防栓的核心价值与应用场景传统消防栓往往存在“看不见、摸不着、用不了”的痛点,在赣州这样地形复杂、老城区与新城区并存的区域,传统设施的管理难度极大,智能消防栓的出……

    2026-06-29
    0
  • 云服务器和物理机到底有啥区别?

    云服务器本质上是虚拟化资源池中的弹性实例,而传统物理服务器是独占的硬件实体,前者胜在弹性与运维便捷,后者强在物理隔离与性能稳定,具体选择取决于业务对成本、扩展性及安全合规的权衡,很多人初次接触服务器时,容易把“云服务器”和“传统物理服务器”混为一谈,觉得它们都是用来跑网站或存数据的盒子,这两者的底层逻辑完全不同……

    2026-06-29
    0

发表回复

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