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

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

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

#导入requests库(请求和页面抓取)

import requests

#导入正则库(从页面代码中提取信息)

import re

#导入科学计算库(拼表及各种分析汇总)

import pandas aspd

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

#设置请求中头文件的信息

headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML,likeGecko) Chrome/23.0.1271.64

Safari/537.11',

'Accept':'text/html;q=0.9,*/*;q=0.8',

'Accept-Charset':'ISO-8859-1,utf-8;q=0.7,*;q=0.3',

'Connection':'close',

'Referer':'https://www.baidu.com/'

}

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

#抓取并保存页面信息

r=requests.get('http://www.p2peye.com/shuju/ptsj/',headers=headers)

html=r.content

#对抓取的页面进行编码

html=str(html, encoding = "GBK")

#查看抓取的页面源码

html

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

#使用正则提取title字段信息

title=re.findall(r'"return false".*?title="(.*?)"',html)

#使用正则提取total字段信息

total=re.findall(r'"total">(.*?)万

#使用正则提取rate字段信息

rate=re.findall(r'"rate">(.*?)

#使用正则提取pnum字段信息

pnum=re.findall(r'"pnum">(.*?)人

#使用正则提取cycle字段信息

cycle=re.findall(r'"cycle">(.*?)月

#使用正则提取plnum字段信息

p1num=re.findall(r'"p1num">(.*?)人

#使用正则提取fuload字段信息

fuload=re.findall(r'"fuload">(.*?)分钟

#使用正则提取alltotal字段信息

alltotal=re.findall(r'"alltotal">(.*?)万

#使用正则提取captial字段信息

capital=re.findall(r'"capital">(.*?)万

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

#查看title字段信息

title

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

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

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

#导入pymysql库

import pymysql

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

#打开数据库连接

db = pymysql.connect("192.168.0.1","root","","shuju_test")

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

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

cursor= db.cursor()

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

#创建一个表

sql1 = "CREATETABLEwdty7( titlevarchar(255), totalvarchar(255), ratevarchar(255), people_numvarchar(255), cycle

varchar(255), people_lend_numvarchar(255), full_loadvarchar(255), all_totalvarchar(255), capitalvarchar(255)) "

# 使用 execute() 方法执行 SQL 语句

cursor.execute(sql1)

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

#向表中创建新的记录

foriinrange(len(title)):

sql="INSERTINTO`wdty6`(`title`, `total`, `rate`, `people_num`, `cycle`, `people_lend_num`, `full_load`, `all_total`,

`capital`)VALUES( %s, %s, %s, %s, %s, %s, %s, %s, %s);"

values=(title[i].encode("utf-7").decode("latin1"),total[i],rate[i],pnum[i],cycle[i],p1num[i],fuload[i],alltotal

[i],capital[i])

cursor.execute(sql,values)

db.commit()

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

#设置查询语句

sql1="SELECT * FROM wdty6 where cycle>0.6;"

# 使用 execute() 方法执行 SQL 查询

cursor.execute(sql1)

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

#使用fetchall()方法获取所有数据

data = cursor.fetchall()

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

#将获取数据

import pandas aspd

columns=["title","total","rate","people_num","cycle","people_lend_num","full_load","all_total","capital"]

df = pd.DataFrame(list(data),columns=columns)

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

#查看数据表

df.head()

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

# 关闭数据库连接

db.close()

【编辑推荐】

【责任编辑:未丽燕 TEL:(010)68476606】

点赞 0

python数据库连接mysql_使用Python连接MySQL数据库相关推荐

  1. python 事务操作_Python实现连接mysql数据库及事务处理【冰斌棒】

    Python实现连接mysql数据库及事务处理[冰斌棒] 3年前 (2018-02-02)    作者:冰斌棒    分类:冰斌棒18程序计划    阅读次数:774 评论(0) import pym ...

  2. sqlalchemy 使用mysql_使用SQLALchemy连接MySql数据库并进行操作

    "导语:这期主要学一下利用SQLALchemy连接MySql数据库以及对数据库的增删改查的操作,可能代码部分很多还不能理解,我觉得像一些固定写法先用着(比如引入的类等),再慢慢体会缘由&qu ...

  3. cas mysql_使用CAS连接Mysql数据库

    CAS安装好默认使用的是静态用户和密码,但实际使用中,我们可能连接LDAP.数据库等其他情况.接下来,我们看一下如何使用CAS连接Mysql数据库. 创建数据库1 2 3 4 5 6 7 8DROP ...

  4. php 跳板机连接mysql,使用python如何通过跳板机连接MySQL数据库

    生产环境中,为了安全起见,大多数的数据库是无法在本地直接访问的,需要先连接跳板机,然后通过跳板机访问.创业天下测试数据库也是采用这种方法连接数据的,那么我们应该怎么通过Python去连接数据库呢,代码 ...

  5. Python项目:学生管理系统连接MySQL数据库(增删改查、排序、统计、显示所有信息)

    文章目录 一程序功能(Function) 1. 功能概述 2. 思维导图 二.开始实践 战前准备 定义学生管理系统菜单 定义主函数 1.录入学生信息 2.查找学生信息 3.删除学生信息 4.修改学生信 ...

  6. django设置mysql数据库连接_django如何设置连接mysql数据库

    django 的mysql数据配置 . 在成功安装python-mysql后,开始配置django的mysql连接配置 打开django项目下的setting.py文件,将DATABASES改成下面这 ...

  7. 使用jdbc驱动连接mysql_使用jdbc连接mysql数据库

    1.提供mysql的jdbc驱动(我的博客文件里提供了驱动jar包) 2.使用IDEA工具,把jar包添加到项目里(具体步骤如下) 1)打开模块设置 2)选择libraries功能,点击+号,选择ja ...

  8. cpp mysql_使用MYSQLCPPCONN连接MYSQL数据库与读写BLOB字段

    起初也是用C语言接口, 但不知为什么在VS2010下使用时调用mysql_thread_init()函数总是失败(动态链接) 其他函数也用不了, 用了一阵子的ODBC但不会操作BLOB字段 遂转到MY ...

  9. spring无法连接mysql_初学Spring——连接MySQL数据库的问题和解决

    零:前言 初学Spring + Angular才不到一周时间,刚打开第一个Spring的示例项目,在运行时就出现了错误. 代码如下: *************************** APPLI ...

最新文章

  1. 编译原理——词法分析器
  2. linux mysql 最小安装,Linux最小化安装之安装mysql
  3. php system 255,GitHub - dwg255/OA-SYS: OA办公系统开源项目
  4. 信息学奥赛一本通 1017:浮点型数据类型存储空间大小 | OpenJudge NOI 1.2 02
  5. 【原创】StreamInsight查询系列(十)——基本查询操作之联接
  6. ExtJS2.0实用简明教程 - Form布局
  7. 这是今年前端最常见的面试题,你都会了吗?
  8. LightGBM 二元分类、多类分类、 Python的回归和分类器应用
  9. 数独游戏技巧从入门到精通_免费教学视频数独阶梯训练让孩子从入门到精通,数学思维直线上升!...
  10. VUE仿知乎网站(三)首页主体部分开发
  11. pycharm 格式化html文件
  12. Python Matplotlib scatter函数:绘制散点图
  13. JAVA -- NPOI在excel中画直线
  14. 阿里云GPU云服务器gn5i/gn5/gn6i/gn6v详解
  15. 用Python做命令行地址簿
  16. 【Autosar Can网络远程唤醒】
  17. Baxter实战 baxter与moveit!
  18. 简单的网页布局实战(表格与HTML框架)
  19. 微软什么时候停止对win7进行服务器,微软官方通告:2020年1月24日起停止对windows7的技术支持...
  20. 《“蓝桥杯”全国软件和信息技术专业人才大赛(电子类)实训指导书》

热门文章

  1. php仿微信语音条,html5的audio实现高仿微信语音播放效果
  2. Excel常用工具---在线版V1.5使用说明
  3. 邮箱服务器满了foxmail,foxmail邮箱的容量满了,应该怎样删除-上海腾讯企业邮箱[foxmail]...
  4. 在线制作h5——上帝的礼物
  5. linux listener.ora 位置,Oracel数据库 listener.ora和tnsnames.ora配置
  6. 微信小程序全栈开发实践 第三章 微信小程序开发常用的API介绍及使用 -- 3.7 网络接口简介(七)学习EventChannel对象
  7. 05 CSS从原理到熟练 - 1
  8. Confidence Rekindles In Credit Mkts
  9. 使用hutool生成excel遇到的问题:
  10. 智力过河游戏c语言,Flash AS代码实现智力过河小游戏