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 socket.error: [Errno 98] Address already in use的原因和解决方法
Aug 25 Python
Python抓取框架 Scrapy的架构
Aug 12 Python
分享一个可以生成各种进制格式IP的小工具实例代码
Jul 28 Python
Python基于ThreadingTCPServer创建多线程代理的方法示例
Jan 11 Python
利用numpy和pandas处理csv文件中的时间方法
Apr 19 Python
Python Dataframe 指定多列去重、求差集的方法
Jul 10 Python
Python解析命令行读取参数之argparse模块
Jul 26 Python
python 协程中的迭代器,生成器原理及应用实例详解
Oct 28 Python
python 链接sqlserver 写接口实例
Mar 11 Python
解决jupyter notebook显示不全出现框框或者乱码问题
Apr 09 Python
Keras中的多分类损失函数用法categorical_crossentropy
Jun 11 Python
python基于pygame实现飞机大作战小游戏
Nov 19 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
ThinkPHP 表单自动验证运用示例
2014/10/13 PHP
PHP实现文件下载【实例分享】
2017/04/28 PHP
Zend Framework框架中实现Ajax的方法示例
2017/06/27 PHP
PHP共享内存使用与信号控制实例分析
2018/05/09 PHP
laravel获取不到session的三种解决办法【推荐】
2018/09/16 PHP
jquery ready()的几种实现方法小结
2010/06/18 Javascript
JS的Document属性和方法小结
2013/09/17 Javascript
不要使用jQuery触发原生事件的方法
2014/03/03 Javascript
jquery 扑捉回车键事件代码
2014/04/24 Javascript
jquery 获取 outerHtml 包含当前节点本身的代码
2014/10/30 Javascript
浅谈jquery点击label触发2次的问题
2016/06/12 Javascript
JavaScript中误用/g导致的正则test()无法正确重复执行的解决方案
2016/07/27 Javascript
浅谈js中StringBuffer类的实现方法及使用
2016/09/02 Javascript
AngularJS  ng-table插件设置排序
2016/09/21 Javascript
使用JavaScript获取URL中的参数(两种方法)
2016/11/16 Javascript
基于canvas实现手写签名(vue)
2020/05/21 Javascript
浅析JavaScript预编译和暗示全局变量
2020/09/03 Javascript
多种类型jQuery网页验证码插件代码实例
2021/01/09 jQuery
Python读写配置文件的方法
2015/06/03 Python
使用PyCharm配合部署Python的Django框架的配置纪实
2015/11/19 Python
Python 爬虫图片简单实现
2017/06/01 Python
机器学习python实战之手写数字识别
2017/11/01 Python
python实现csv格式文件转为asc格式文件的方法
2018/03/23 Python
Python全栈之列表数据类型详解
2019/10/01 Python
python自动化unittest yaml使用过程解析
2020/02/03 Python
No module named ‘win32gui‘ 的解决方法(踩坑之旅)
2021/02/18 Python
css3实现二维码扫描特效的示例
2020/10/29 HTML / CSS
HTML5新增的Css选择器、伪类介绍
2013/08/07 HTML / CSS
用canvas做一个DVD待机动画的实现代码
2019/04/12 HTML / CSS
印度最大的旅游网站:MakeMyTrip
2016/10/05 全球购物
欧舒丹俄罗斯官方网站:L’OCCITANE俄罗斯
2019/11/22 全球购物
解除财产保全担保书
2014/05/20 职场文书
大学生简历求职信
2014/06/24 职场文书
工作检讨书怎么写
2015/01/23 职场文书
2015年质量月活动总结报告
2015/03/27 职场文书
教师继续教育反思周记
2015/06/25 职场文书