Python3爬虫学习之MySQL数据库存储爬取的信息详解


Posted in Python onDecember 12, 2018

本文实例讲述了Python3爬虫学习之MySQL数据库存储爬取的信息。分享给大家供大家参考,具体如下:

数据库存储爬取的信息(MySQL)

爬取到的数据为了更好地进行分析利用,而之前将爬取得数据存放在txt文件中后期处理起来会比较麻烦,很不方便,如果数据量比较大的情况下,查找更加麻烦,所以我们通常会把爬取的数据存储到数据库中便于后期分析利用。

这里,数据库选择MySQL,采用pymysql 这个第三方库来处理python和mysql数据库的存取,python连接mysql数据库的配置信息

db_config ={
  'host': '127.0.0.1',
  'port': 3306,
  'user': 'root',
  'password': '',
  'db': 'pytest',
  'charset': 'utf8'
}

以爬取简书首页文章标题以及url为例,先分析抓取目标信息,

Python3爬虫学习之MySQL数据库存储爬取的信息详解

如上图,文章题目在a标签中,且url(href)只含有后半部分,所以在存储的时候,最好把它补全。

mysql:新建一个数据库pytest,建立一张名为titles的表,表中字段分别为id(int自增),title(varchar),url(varchar),如下:

Python3爬虫学习之MySQL数据库存储爬取的信息详解

进行数据库操作的思路为:获得数据库连接(connection)->获得游标(cursor)->执行sql语句(execute)->事物提交(commit)->关闭数据据库连接(close),具体代码实现如下:

# -*- coding:utf-8 -*-
from urllib import request
from bs4 import BeautifulSoup
import pymysql
# mysql连接信息(字典形式)
db_config ={
  'host': '127.0.0.1',
  'port': 3306,
  'user': 'root',
  'password': '',
  'db': 'pytest',
  'charset': 'utf8'
}
# 获得数据库连接
connection = pymysql.connect(**db_config)
# 数据库配置,获得连接(参数方式)
# connection = pymysql.connect(host='127.0.0.1',
#            port=3306,
#            user='root',
#            password='',
#            db='pytest',
#            charset='utf8')
url = r'http://www.jianshu.com/'
# 模拟浏览器头
headers = {
  'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'
}
page = request.Request(url, headers=headers)
page_info = request.urlopen(page).read().decode('utf-8')
soup = BeautifulSoup(page_info, 'html.parser')
urls = soup.find_all('a', 'title')
try:
  # 获得数据库游标
  with connection.cursor() as cursor:
    sql = 'insert into titles(title, url) values(%s, %s)'
    for u in urls:
      # 执行sql语句
      cursor.execute(sql, (u.string, r'http://www.jianshu.com'+u.attrs['href']))
  # 事务提交
  connection.commit()
finally:
  # 关闭数据库连接
  connection.close()

代码执行结果:

Python3爬虫学习之MySQL数据库存储爬取的信息详解

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python正则表达式用法总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python获得两个数组交集、并集、差集的方法
Mar 27 Python
flask中使用蓝图将路由分开写在不同文件实例解析
Jan 19 Python
[原创]windows下Anaconda的安装与配置正解(Anaconda入门教程)
Apr 05 Python
python使用正则表达式来获取文件名的前缀方法
Oct 21 Python
详解python Todo清单实战
Nov 01 Python
python实现对任意大小图片均匀切割的示例
Dec 05 Python
Pytorch技巧:DataLoader的collate_fn参数使用详解
Jan 08 Python
使用Keras中的ImageDataGenerator进行批次读图方式
Jun 17 Python
利用Python实现Json序列化库的方法步骤
Sep 09 Python
重构Python代码的六个实例
Nov 25 Python
Python调用系统命令os.system()和os.popen()的实现
Dec 31 Python
python中PyQuery库用法分享
Jan 15 Python
Python3爬虫学习之将爬取的信息保存到本地的方法详解
Dec 12 #Python
对python制作自己的数据集实例讲解
Dec 12 #Python
Python3爬虫学习之爬虫利器Beautiful Soup用法分析
Dec 12 #Python
Python解决线性代数问题之矩阵的初等变换方法
Dec 12 #Python
对python数据切割归并算法的实例讲解
Dec 12 #Python
python实现文本界面网络聊天室
Dec 12 #Python
Python3爬虫学习之应对网站反爬虫机制的方法分析
Dec 12 #Python
You might like
星际中的相关伤害
2020/03/04 星际争霸
如何使用动态共享对象的模式来安装PHP
2006/10/09 PHP
PHP读取PDF内容配合Xpdf的使用
2012/11/24 PHP
php环境下利用session防止页面重复刷新的具体实现
2014/01/09 PHP
php计划任务之验证是否有多个进程调用同一个job的方法
2015/12/07 PHP
JavaScript中valueOf函数与toString方法深入理解
2012/12/02 Javascript
利用Keydown事件阻止用户输入实现代码
2014/03/11 Javascript
超级简单实现JavaScript MVC 样式框架
2015/03/24 Javascript
关于安卓手机微信浏览器中使用XMLHttpRequest 2上传图片显示字节数为0的解决办法
2016/05/17 Javascript
Nodejs 获取时间加手机标识的32位标识实现代码
2017/03/07 NodeJs
使用ionic播放轮询广告的实现方法(必看)
2017/04/24 Javascript
NodeJS创建最简单的HTTP服务器
2017/05/15 NodeJs
javascript+jQuery实现360开机时间显示效果
2017/11/03 jQuery
详解Vue2.0配置mint-ui踩过的那些坑
2018/04/23 Javascript
微信小程序内拖动图片实现移动、放大、旋转的方法
2018/09/04 Javascript
vue里input根据value改变背景色的实例
2018/09/29 Javascript
vue页面切换项目实现转场动画的方法
2019/11/12 Javascript
js函数柯里化的方法和作用实例分析
2020/04/11 Javascript
[01:09:13]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第三场 1月19日
2021/03/11 DOTA
Python计算一个文件里字数的方法
2015/06/15 Python
Python实现读取json文件到excel表
2017/11/18 Python
python3操作微信itchat实现发送图片
2018/02/24 Python
Pandas之Fillna填充缺失数据的方法
2019/06/25 Python
python判断一个对象是否可迭代的例子
2019/07/22 Python
python输入错误后删除的方法
2019/10/12 Python
python实现高斯判别分析算法的例子
2019/12/09 Python
HTML5 虚拟键盘出现挡住输入框的解决办法
2017/02/14 HTML / CSS
html5实现九宫格抽奖可固定抽中某项奖品
2020/06/15 HTML / CSS
J2EE系统只能是基于web
2015/09/08 面试题
项目经理岗位职责
2013/11/11 职场文书
优秀交警事迹材料
2014/01/26 职场文书
餐厅考勤管理制度
2014/01/28 职场文书
微笑服务演讲稿
2014/05/13 职场文书
2019幼儿教师求职信(3篇)
2019/09/20 职场文书
深入理解Vue的数据响应式
2021/05/15 Vue.js
python字符串的多行输出的实例详解
2021/06/08 Python