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 相关文章推荐
Pyhthon中使用compileall模块编译源文件为pyc文件
Apr 28 Python
Python版微信红包分配算法
May 04 Python
浅谈Python生成器generator之next和send的运行流程(详解)
May 08 Python
使用pandas把某一列的字符值转换为数字的实例
Jan 29 Python
Python list列表中删除多个重复元素操作示例
Feb 27 Python
windows中安装Python3.8.0的实现方法
Nov 19 Python
通过python连接Linux命令行代码实例
Feb 18 Python
python3格式化字符串 f-string的高级用法(推荐)
Mar 04 Python
2020新版本pycharm+anaconda+opencv+pyqt环境配置学习笔记,亲测可用
Mar 24 Python
如何在keras中添加自己的优化器(如adam等)
Jun 19 Python
如何验证python安装成功
Jul 06 Python
一文解决django 2.2与mysql兼容性问题
Jul 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
《OVERLORD》手游英文版即将上线 手机上也能扮演骨王
2020/04/09 日漫
用缓存实现静态页面的测试
2006/12/06 PHP
php使用Jpgraph绘制柱形图的方法
2015/06/10 PHP
读jQuery之八 包装事件对象
2011/06/21 Javascript
JS关键字球状旋转效果的实例代码
2013/11/29 Javascript
用js格式化金额可设置保留的小数位数
2014/05/09 Javascript
javascript简单进制转换实现方法
2016/11/24 Javascript
JS数字千分位格式化实现方法总结
2016/12/16 Javascript
JS实现DIV高度自适应窗口示例
2017/02/16 Javascript
通俗解释JavaScript正则表达式快速记忆
2017/08/23 Javascript
js判断文件类型大小并给出提示的实现方法
2018/01/03 Javascript
Angular2进阶之如何避免Dom误区
2018/04/02 Javascript
使用JS代码实现俄罗斯方块游戏
2018/08/03 Javascript
JavaScript创建对象的常用方式总结
2018/08/10 Javascript
详解基于React.js和Node.js的SSR实现方案
2019/03/21 Javascript
JavaScript前端页面搜索功能案例【基于jQuery】
2019/07/10 jQuery
vue Tab切换以及缓存页面处理的几种方式
2019/11/05 Javascript
node.js express捕获全局异常的三种方法实例分析
2019/12/27 Javascript
[45:18]完美世界DOTA2联赛循环赛 PXG vs IO 第二场 11.06
2020/11/09 DOTA
Python字符串的encode与decode研究心得乱码问题解决方法
2009/03/23 Python
python清除指定目录内所有文件中script的方法
2015/06/30 Python
Python实现的径向基(RBF)神经网络示例
2018/02/06 Python
Python读取mat文件,并转为csv文件的实例
2018/07/04 Python
python环形单链表的约瑟夫问题详解
2018/09/27 Python
Python使用Shelve保存对象方法总结
2019/01/28 Python
Pycharm制作搞怪弹窗的实现代码
2021/02/19 Python
中国跨境电子商务网站:NewFrog
2018/03/10 全球购物
Jacques Lemans德国:奥地利钟表品牌
2019/12/26 全球购物
澳洲CFL商城:CHEMIST FOR LESS(中文)
2021/02/28 全球购物
竞争上岗演讲稿
2014/01/05 职场文书
库房保管员岗位职责
2014/04/07 职场文书
二年级评语大全
2014/04/23 职场文书
团组织推荐意见
2015/06/05 职场文书
植树节新闻稿
2015/07/17 职场文书
2016年第二十届“母亲节暨幸福工程救助贫困母亲活动日”活动总结
2016/04/06 职场文书
八年级作文之友谊
2019/12/02 职场文书