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 相关文章推荐
详谈Python2.6和Python3.0中对除法操作的异同
Apr 28 Python
详解appium+python 启动一个app步骤
Dec 20 Python
Python使用遗传算法解决最大流问题
Jan 29 Python
Python走楼梯问题解决方法示例
Jul 25 Python
Python设计模式之策略模式实例详解
Jan 21 Python
linux查找当前python解释器的位置方法
Feb 20 Python
详解python读取和输出到txt
Mar 29 Python
python通过TimedRotatingFileHandler按时间切割日志
Jul 17 Python
django数据库自动重连的方法实例
Jul 21 Python
通过python实现windows桌面截图代码实例
Jan 17 Python
Python字符串hashlib加密模块使用案例
Mar 10 Python
Python实现日志实时监测的示例详解
Apr 06 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
用PHP和ACCESS写聊天室(三)
2006/10/09 PHP
php计算2个日期的差值函数分享
2015/02/02 PHP
PHP将MySQL的查询结果转换为数组并用where拼接的示例
2016/05/13 PHP
Laravel5.1 框架表单验证操作实例详解
2020/01/07 PHP
javascript 触发事件列表 比较不错
2009/09/03 Javascript
JQuery select标签操作代码段
2010/05/16 Javascript
JQuery防止退格键网页后退的实现代码
2012/03/23 Javascript
jQuery中:lt选择器用法实例
2014/12/29 Javascript
javascript获取wx.config内部字段解决微信分享
2016/03/09 Javascript
js事件驱动机制 浏览器兼容处理方法
2016/07/23 Javascript
AngularJS 与Bootstrap实现表格分页实例代码
2016/10/14 Javascript
JavaScript中利用for循环遍历数组
2017/01/15 Javascript
Angular.js中下拉框实现渲染html的方法
2017/06/18 Javascript
ReactNative Image组件使用详解
2017/08/07 Javascript
纯js封装的ajax功能函数与用法示例
2018/05/14 Javascript
js屏蔽退格键(backspace或者叫后退键与F5)
2019/02/10 Javascript
vue + typescript + video.js实现 流媒体播放 视频监控功能
2019/07/07 Javascript
js全屏事件fullscreenchange 实现全屏、退出全屏操作
2019/09/17 Javascript
highcharts.js数据绑定方式代码实例
2019/11/13 Javascript
vue.js+ElementUI实现进度条提示密码强度效果
2020/01/18 Javascript
Vue 防止短时间内连续点击后多次触发请求的操作
2020/11/11 Javascript
一篇不错的Python入门教程
2007/02/08 Python
Python中条件判断语句的简单使用方法
2015/08/21 Python
wxpython中Textctrl回车事件无效的解决方法
2016/07/21 Python
放弃 Python 转向 Go语言有人给出了 9 大理由
2017/10/20 Python
Python数据结构之栈、队列的实现代码分享
2017/12/04 Python
Python3.7 新特性之dataclass装饰器
2019/05/27 Python
ipython和python区别详解
2019/06/26 Python
Python面向对象程序设计之继承、多态原理与用法详解
2020/03/23 Python
python 的topk算法实例
2020/04/02 Python
佛罗里达州印第安河新鲜水果:Hale Groves
2017/02/20 全球购物
个人简历自我评价八例
2013/10/31 职场文书
社团招新策划书
2014/02/04 职场文书
机器人总动员观后感
2015/06/09 职场文书
财务管理制度范本
2015/08/04 职场文书
2016寒假社会实践心得体会范文
2015/10/09 职场文书