文章目录

  • 1.数据库基本操作
  • 2. 封装操作数据库类
  • 3.实战-爬取豆瓣网电影排行,并将结果保存到数据库中

1.数据库基本操作

连接数据库前,请先确认以下事项:

您已经创建了数据库 TESTDB.
在TESTDB数据库中您已经创建了表 EMPLOYEE
EMPLOYEE表字段为 FIRST_NAME, LAST_NAME, AGE, SEX 和 INCOME。

这里假设连接数据库TESTDB使用的用户名为 “testuser” ,密码为 “test123”
在你的机子上已经安装了 Python pymysql 模块。

import pymysql# 打开数据库连接
db = pymysql.connect(host='localhost',user='testuser',password='test123',database='TESTDB')# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()# 使用 execute()  方法执行 SQL 查询
cursor.execute("SELECT VERSION()")# 使用 fetchone() 方法获取单条数据.
data = cursor.fetchone()print("Database version : %s " % data)# 关闭数据库连接
db.close()

Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据。

  1. fetchone(): 该方法获取下一个查询结果集。结果集是一个对象
  2. fetchall(): 接收全部的返回结果行
import pymysql# 打开数据库连接
db = pymysql.connect(host='localhost',user='testuser',password='test123',database='TESTDB')# 使用cursor()方法获取操作游标
cursor = db.cursor()# SQL 查询语句
sql = "SELECT * FROM EMPLOYEE WHERE INCOME=100"
try:# 执行SQL语句cursor.execute(sql)# 获取所有记录列表results = cursor.fetchall()for row in results:fname = row[0]lname = row[1]age = row[2]sex = row[3]income = row[4]# 打印结果print("fname=%s,lname=%s,age=%s,sex=%s,income=%s" % \(fname, lname, age, sex, income))
except:print("Error: unable to fetch data")

简单的来讲操作数据库分为一下步骤

  1. 先使用cursor()创建游标对象。
  2. 书写要执行的SQL语句
  3. 调用游标的execute方法下执行SQL命令
  4. 之后调用commit方法将结果提交给数据库即可

2. 封装操作数据库类

import pymysqlclass MySQL:# db = pymysql.connect("localhost","user","test123","TESTDB" )def __init__(self, _user, _passwd, _database, _host='127.0.0.1', _port=3306, _charset='utf8'):self.conPtr = pymysql.connect(user=_user,passwd=_passwd,database=_database,host=_host,port=_port,charset=_charset,)# 创建游标对象修改数据库self.curPtr = self.conPtr.cursor()def __execute(self, sql):try:self.curPtr.execute(sql)self.conPtr.commit()print('INFO:操作成功')except:self.conPtr.rollback()def CreateDatabase(self, sql):self.curPtr.execute(sql)# 查找一条语句def Search(self, sql):self.curPtr.execute(sql)result = self.curPtr.fetchone()return result# 查找多条数据def SearchAll(self, sql):self.curPtr.execute(sql)result = self.curPtr.fetchall()return result# 更新SQLdef UpdateSQL(self, sql):self.__execute(sql)# 插入操作def InsertSQL(self, sql):self.__execute(sql)# 删除操作def DropSQL(self, sql):self.__execute(sql)# 关闭链接def Close(self):self.conPtr.close()

3.实战-爬取豆瓣网电影排行,并将结果保存到数据库中

爬取数据函数采用正则表达式提取数据

import redef getMoveName(string):return re.findall('<span style="font-size:13px;">(.*?)</span>', string)def getMoveStar(string):return re.findall('<span class="rating_nums">(.*?)</span>', string)

爬取主函数:

from getMySQL import MySQL
from getMessage import getMoveName, getMoveStar
import requestsCreatSQL = '''CREATE TABLE IF NOT EXISTS move_msg(name VARCHAR(50) COMMENT '电影名称',grade FLOAT(2,1) COMMENT '电影评分')CHARACTER SET 'utf8';'''url = "https://movie.douban.com/chart"headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 ''Safari/537.36'
}con = MySQL('root', '000000', 'python_sql', 'localhost')
con.CreateDatabase(CreatSQL)def ExitHelp():Str = input('是否查询爬取结果(yes/no)\n')if Str == "yes":msg = con.SearchAll("SELECT * from move_msg;")for item in msg:print(f'电影名: {item[0]}\n 评分:{item[1]}\n--------------\n')# con.DropSQL("DROP TABLE move_msg;")con.Close()if __name__ == '__main__':response = requests.get(url, headers=headers)if response.status_code != 200:print("DEAD:获取响应页面失败")else:html = response.textMoveName = getMoveName(html)MoveStr = getMoveStar(html)for name, grade in zip(MoveName, MoveStr):print(f"INFO:电影:{name}和其评分正在写入数据库...\n")con.InsertSQL("INSERT INTO move_msg(name,grade) VALUES('%s','%s');" % (name, grade))ExitHelp()

运行结果:

数据库运行图

控制台调试结果:

Python-爬虫(数据库基本操作,爬取豆瓣电影排行)相关推荐

  1. Python爬虫入门(爬取豆瓣电影信息小结)

    Python爬虫入门(爬取豆瓣电影信息小结) 1.爬虫概念 网络爬虫,是一种按照一定规则,自动抓取互联网信息的程序或脚本.爬虫的本质是模拟浏览器打开网页,获取网页中我们想要的那部分数据. 2.基本流程 ...

  2. python爬虫,Scrapy爬取豆瓣电影《芳华》电影短评,分词生成词云图。

    项目github地址:https://github.com/kocor01/scrapy_cloud Python版本为3.6 自己写的简单架构<python爬虫,爬取豆瓣电影<芳华> ...

  3. Python爬虫实战 | (3) 爬取豆瓣电影Top250

    在本篇博客中,我们将使用requests+正则表达式来爬取豆瓣电影TOP250电影榜单,获取每部电影的序号.片名.导演.编剧.主演.类型.制作国家/地区.语言.上映日期.片长.又名.豆瓣评分和剧情简介 ...

  4. python爬虫豆瓣电影短评_【Python爬虫】BeautifulSoup爬取豆瓣电影短评

    目的:爬取豆瓣[红海行动]电影的首页短评 步骤: 1.使用BeautifulSoup解析网页 soup = BeautifulSoup(r, 'lxml') // lxml 库解析速度快,也能解析复杂 ...

  5. Python爬虫实战(爬取豆瓣电影)

    首先介绍一下python的几个库,python之所以在实现爬虫方面有独特的优势,在于其类库非常的丰富,基本涵盖了所有的需求,只要找到对应的库进行import,这就类似于Java中导入类库或者jar包那 ...

  6. Python爬虫入门 | 4 爬取豆瓣TOP250图书信息

      先来看看页面长啥样的:https://book.douban.com/top250   我们将要爬取哪些信息:书名.链接.评分.一句话评价--   1. 爬取单个信息 我们先来尝试爬取书名,利用之 ...

  7. Python爬虫实战(1) | 爬取豆瓣网排名前250的电影(下)

    在Python爬虫实战(1) | 爬取豆瓣网排名前250的电影(上)中,我们最后爬出来的结果不是很完美,这对于"精益求精.追求完美的"程序猿来说怎么能够甘心 所以,今天,用pyth ...

  8. python爬虫——Cookie登录爬取豆瓣短评和影评及常见问题

    python爬虫--Cookie登录爬取豆瓣短评和影评 常见问题(本文已解决) 具体步骤 一.获取网页源码 短评.影评 二.解析网页源码及爬取评论 1.短评网页解析 ①确定位置 2.短评爬取 ①名称爬 ...

  9. python爬虫 requests+bs4爬取猫眼电影 傻瓜版教程

    python爬虫 requests+bs4爬取猫眼电影 傻瓜版教程 前言 一丶整体思路 二丶遇到的问题 三丶分析URL 四丶解析页面 五丶写入文件 六丶完整代码 七丶最后 前言 大家好我是墨绿 头顶总 ...

  10. 爬取豆瓣电影排行top250

    功能描述V1.0: 爬取豆瓣电影排行top250 功能分析: 使用的库 1.time 2.json 3.requests 4.BuautifulSoup 5.RequestException 上机实验 ...

最新文章

  1. 黑计算机学校给的处分,学校处分通告格式
  2. python整数类型的表示字母_Python学习笔记之基本数据类型-Number
  3. Rust 阴阳谜题,及纯基于代码的分析与化简
  4. HDU 5131 Song Jiang's rank list
  5. VB6:通过ADO访问Oracle存储过程返回的结果集
  6. python散点图密度颜色_Python实现彩色散点图绘制(利用色带对散点图进行颜色渲染)...
  7. .Net页面缓存OutPutCache详解
  8. 安装Kibana报错[warning][admin][elasticsearch] Unable to revive connection: http://localhost:9200/
  9. 2-9 prev + next选择器 “远亲不如近邻” 返回且只返回唯一-个元素。 而通过prev + next选择器就可以查找与“prev”元素紧邻的下一个“next”元素...
  10. 广度(宽度)优先搜索思路总结
  11. 文件编辑vim常用命令
  12. 10本经典励志书籍推荐
  13. Andorid Activity的本质是什么
  14. 面试了一位 阿里出来的46 岁的程序员,思绪万千,最后结局居然...
  15. Cross_entropy和softmax
  16. layui 弹出层回调获取弹出层数据
  17. chef infra安装和使用入门
  18. 【Android Gradle 插件】ProductFlavor 配置 ( consumerProguardFiles 配置 | dimension 配置 )
  19. win10 版本比较 及安装版本
  20. 如何设置zencart买满多少免运费?

热门文章

  1. 数据分析指标缩写英文单词解释
  2. 七脉轮位置_人体的七个脉轮能量中心与它的代表意义
  3. 秦九韶算法——计算方法
  4. ASP.NET 实现简单的注册界面(使用asp控件)
  5. 关于CSDN原力计划活动说明
  6. IEEE Transactions on Industrial Informatics(TII)投稿指导
  7. [思考] 闲时随笔一篇
  8. 【竞品分析】腾讯QQ手机浏览器与UC手机浏览器产品对比
  9. 戴尔服务器上装vmware esxi
  10. 新面貌,新征程—读《新程序员》有感