Python爬虫之Js逆向案例(10)-爬虫数据批量写入mysql数据库

news/2024/5/9 16:17:25/文章来源:https://blog.csdn.net/li11_/article/details/126671015

最近收到小伙伴们的私信,说如何将爬取的数据批量存到数据库中?数据入库也是童鞋们必须掌握的技能!数据回来之后,肯定需要存放,实效高、数量少的可能大多存放在cvs文件中,通常情况都是要存放到数据库的!

  1. 数据库
  2. 准备数据库链接实例
  3. 结果演示

一.数据库

本案例使用mysql数据库,版本我这边测试了两个:v5.7v8.0.30,不需要那么多,安装一个就行!下面介绍一下我这边的操作!

  1. 阿里云服务器1台;(新账号的话可以免费使用1个月。我这边之前就买了,在上面安装的mysql5.7docker镜像版,网上帖子比较多,这里就不一一介绍了,安装过程很容易找到,就不重复了),没有云服务器的,也可以本地安装一个,练习,无所谓。

2.安装mysql(安装mysql的时候很头疼,大家可能也会遇到账号问题,网上搜方案都能解决)

3.DBeaver
数据库的可视化工具,免费的。还一个好用的工具navicat,这个是收费的,如果能找到破解版的也可以用这个,都挺好用。

二.准备数据库链接实例并实现

新建文件DBPool.py

import pymysql
from dbutils.pooled_db import PooledDBclass MySQL:# 你的数据库host,如何是云服务器,填写你的服务器地址,如果是本地填写localhosthost = 'XXX.XXX.XXX.XXX' # 数据库账号user = 'root'# 数据库端口号,一般默认3306port = 3306# 数据库账号pasword = 'XXXX'# 数据库db = 'XXX'charset = 'utf8'pool = Nonelimit_count = 3  # 最低预启动数据库连接数量def __init__(self):self.pool = PooledDB(pymysql,self.limit_count,host=self.host,user=self.user,passwd=self.pasword,db=self.db,port=self.port,charset=self.charset,use_unicode=True)def select(self, sql):conn = self.pool.connection()cursor = conn.cursor()cursor.execute(sql)result = cursor.fetchall()cursor.close()conn.close()return result# 单个插入def insert(self, sql):conn = self.pool.connection()cursor = conn.cursor()try:cursor.execute(sql)conn.commit()return {'result': True, 'id': int(cursor.lastrowid)}except Exception as err:conn.rollback()return {'result': False, 'err': err}finally:cursor.close()conn.close()# 批量插入def insertMany(self, sql, datas):conn = self.pool.connection()cursor = conn.cursor()try:cursor.executemany(sql, datas)conn.commit()return {'result': True, 'id': int(cursor.lastrowid)}except Exception as err:conn.rollback()return {'result': False, 'err': err}

在py文件中导入数据库连接实例,

from DBPool import MySQL

实例化数据库对象

mysql = MySQL()

爬取到的数据进行处理


def get_fetch(first, last):for page in range(first, last + 1):data.update({"page": page})params = json.dumps(data)# list是爬取到的列表数据,格式为:[{}、{}、{}],一个list有20条数据list = requests.post(url, headers=headers,data=params).json()['data']['item']sql = "INSERT INTO schools(address,admissions,answerurl,belong,central,city_id,city_name,code_enroll,colleges_level,county_id,county_name,department,doublehigh,dual_class,dual_class_name,f211,f985,id,is_logo,is_recruitment,is_top,level,level_name,name,nature,nature_name,province_id,province_name,rank) values(%s,%s,%s,%s,%s,%s,%s, %s,%s, %s,%s, %s,%s,%s,%s, %s,%s,%s, %s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"# datas用于存放将要插入数据库的数据datas = []# print(page, len(list))# 遍历list,for item in list:# 注意这的数据写法value = [item['address'],item['admissions'],item['answerurl'],item['belong'],item['central'],item['city_id'],item['city_name'],item['code_enroll'],item['colleges_level'],item['county_id'],item['county_name'],item['department'],item['doublehigh'],item['dual_class'],item['dual_class_name'],item['f211'],item['f985'],item['id'],item['is_logo'],item['is_recruitment'],item['is_top'],item['level'],item['level_name'],item['name'],item['nature'],item['nature_name'],item['province_id'],item['province_name'],item['rank'],]datas.append(value)# 使用批量插入的insertMany进行处理res = mysql.insertMany(sql, datas)# 注意需要根据返回的结果判断是否插入成功if (res['result']):print(page, "数据插入成功!")else:## 打印失败的页码和错误信息print(page, res)# 防止爬的太快被封,设置随机休眠时间sleepTime = random.random() * 10print('休眠:{}秒'.format(int(sleepTime)))time.sleep(sleepTime)if __name__ == '__main__':# 请求n页数据get_fetch(1, 1000)

三.结果演示

在这里插入图片描述


后期会持续分享爬虫案例-100例,不想自己造轮子的同学可加入我的知识星球,有更多技巧、案例注意事项、案例坑点终结、答疑提问特权等你哦!!!

欢迎加入「python、爬虫、逆向Club」知识星球

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_5147.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[JS入门到进阶] 7条关于 async await 的使用口诀,新学 async await?背10遍,以后要考!快收藏

我是HullQin,公众号线下聚会游戏的作者(欢迎关注公众号,发送加微信,交个朋友),转发本文前需获得作者HullQin授权。我独立开发了《联机桌游合集》,是个网页,可以很方便的跟朋友联机玩…

蓝牙音响插着电源线就会一直有电流声怎么回事呢 All In One

蓝牙音响插着电源线就会一直有电流声怎么回事呢 All In One蓝牙音响插着电源线就会一直有电流声怎么回事呢 All In One周围存在电源的电磁干扰 ✅之前使用 USB 集线器的旁边上有一个电源插板,估计是收到了电磁干扰了 ❌直接使用电脑自带的 USB 接口连接即可 🚀refs https://…

软件测试概念总结

软件测试1.软件测试:2.软件测试的特点:3.软件测试和开发的区别:4.软件测试与调试的区别:5.优秀的软件测试人员具备的素质6.核心竞争力7.学习方法8.学习内容9.需求的概念10.用户需求11.软件需求12.生成测试用例的过程13.为什么需求…

GO语言自学_001_环境配置_windowx11_x64版本

GO语言自学_001_环境配置_windowx11_x64版本下载地址: https://golang.google.cn/ 1、看到那个下载按钮了么?点她!2、点击download到这个页面,根据电脑自身系统配置下载包。3、下载完毕后,运行.msi文件,一路next就可以了。本人电脑默认下载到C:\Program Files\Go路径。需要…

创建员工表格,遍历数组获取每个员工,并且渲染到表格中

首先是CSS部分,根据需求添加属性,可以调整 再是盒子部分 接下来是js部分:重点就是JS部分,利用遍历数组获取每个员工,再进行渲染,注意for下面的console.log( ` 这里面有一个标点符号千万别忘记(叫反引号 是 Shrit +ESC下面这个键) ` ) 实际效果图

计算机毕业设计springboot+vue基本微信小程序的外卖点餐订餐平台

项目介绍 餐饮行业是一个传统的行业。根据当前发展现状,网络信息时代的全面普及,餐饮行业也在发生着变化,单就点餐这一方面,利用手机点单正在逐步进入人们的生活。传统的点餐方式,不仅会耗费大量的人力、时间&#xf…

SAP云集成 SAP Integration Suite启用过程,踩坑记

第一步 :创建一个 subscription I现在访问,会提示unauthorized,无权访问 配置了这个,还是无法访问 CPI界面 最后在CPI 官方文档中看到这么一段,tricky,清除浏览器缓存和cookie 然后进来了。。。 第二步&am…

[Latex] \bibitem{} | .bbl 格式参考文献转换与获得

BibTex格式,在dblp或者谷歌学术等都可直接获得,但是\bibitem{}无法直接获得,因此需要通过BibTex格式进行转换。 BibTeX格式参考文献: \bibitem{}格式参考文献: 将BibTeX格式转为\bibitem{}格式 准备好2个文件&…

【Word】如何批量导出ppt中的备注

【Word】如何批量导出ppt中的备注文件 | 导出 | 创建讲义 | 备注在幻灯片旁在word中删除左边两列,复制剩下的表格 | 粘贴-只保留文本

解决 Element的el-input 密码输入框浏览器自动填充账号密码问题

问题描述 通常情况下,浏览器会默认将已保存的账号密码 填充到 input type 值为password的输入框内,如果在登录页面,这当然是非常好的,自动填充密码可以节约时间,提高良好的使用体验,这样当然是没有什么问…

Spring Cloud Gateway 网关整合 Knife4j

文章目录1:环境准备2:gateway服务设置1:导包2:yml配置3:添加配置类,从网关服务中获取服务列表4:重写并覆盖/swagger-resources接口3:其他业务逻辑服务设置1:其他服务导包…

【Unity面试】 Unity基础核心 | 面试真题 | 全面总结 | 建议收藏

你知道的越多,你不知道的越多 🇨🇳🇨🇳🇨🇳 点赞再看,养成习惯,别忘了一键三连哦 👍👍👍 文章持续更新中 📝📝…

springboot项目如何打包成.sh脚本形式运行|assemly插件打包自定义脚本参数

0. 引言 springboot作为目前主流的java开发框架,因为便捷和易上手的特性,深受开发者欢迎。springboot默认以jar包形式,通过java -jar指令运行 但这样的启动方式实际上不是很友好,我们常常看到各类组建通过bin目录下的start.sh脚…

阿里、腾讯、百度大厂的程序员编程指南规范

众所周知,现在软件行业不仅要求功能完成,对代码规范也是要求非常高的。一个编程规范不仅是代码美观、易读,在调试bug、程序安全等方面都是有影响的。比如:代码中的魔法数字,要求提取枚举、SQL语句要求不能采用拼接方式…

我开发了一个下载器 带宽拉满

大家好,我是 jonssonyan,一个痴迷软件技术的人。今天和大家分享一个我之前开发的 PC 端下载器。 准确的说是一款基于 AriaNg 和 Aria2 的 PC 端下载器。目前只支持 Windows 平台,我给它取名叫Aria2-X,并且将代码开源在 GitHub 上…

YOLOv7改进之二十五:引入Swin Transformer

​前 言:作为当前先进的深度学习目标检测算法YOLOv7,已经集合了大量的trick,但是还是有提高和改进的空间,针对具体应用场景下的检测难点,可以不同的改进方法。此后的系列文章,将重点对YOLOv7的如何改进进行…

终于拿到了爆火全网的进一线大厂程序员必看的1700道java面试题

爆火全网的进一线大厂程序员必看的1700道java面试题到底有多牛? 牛不牛不敢说,但是有好多程序员是靠这一套1700道高频面试题,顺利收到很多大厂offer! 以至于,到现在为止,大厂都开始按照这一套1700道面试题…

北京十大靠谱律师事务所排名(口碑榜单)

律师行业很多人并不太了解,其实简单的案件一般不需要律师有丰富的经验积累,因此委托入行不久的年轻律师,他们能花更多时间去帮你处理,态度好,更重要的是收费低。 复杂的或者涉及金额特别大的案子委托资深律师。当然不是…

【Lua 入门基础篇(十)】文件I/O

文章目录一、文件 I/O二、简单模式1. io.lines([filename])三、完全模式1. file:lines()一、文件 I/O Lua I/O 库用于读取和处理文件。分为简单模式、完全模式。 简单模式(simple model):拥有一个当前输入文件和一个当前输出文件&#xff0c…

倾向得分匹配PSM案例分析

倾向得分匹配(PSM),是一种模仿RCT随机对照试验随机化分组,提高组间均衡性,进而达到降低混杂因素影响目的一种数据处理策略。PSM在计量研究,临床医学等领域有着广泛的应用。 1.案例背景与分析策略 1.1 案例背景介绍 某企业想评价…