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多进程同步Lock、Semaphore、Event实例
Nov 21 Python
python 时间戳与格式化时间的转化实现代码
Mar 23 Python
深入理解python中的select模块
Apr 23 Python
python中实现精确的浮点数运算详解
Nov 02 Python
Python使用Turtle模块绘制五星红旗代码示例
Dec 11 Python
Win7 64位下python3.6.5安装配置图文教程
Oct 27 Python
解决已经安装requests,却依然提示No module named requests问题
May 18 Python
在python里从协程返回一个值的示例
Feb 19 Python
使用Python opencv实现视频与图片的相互转换
Jul 08 Python
关于Python形参打包与解包小技巧分享
Aug 24 Python
django-rest-swagger对API接口注释的方法
Aug 29 Python
简单了解如何封装自己的Python包
Jul 08 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 dirname(__FILE__) 获取当前文件的绝对路径
2011/06/28 PHP
PHP实现支持GET,POST,Multipart/form-data的HTTP请求类
2014/09/24 PHP
PHP curl模拟登录带验证码的网站
2015/11/30 PHP
浅谈laravel-admin的sortable和orderby使用问题
2019/10/03 PHP
使用jquery实现放大镜效果
2014/09/02 Javascript
jquery获取当前日期的方法
2015/01/14 Javascript
JS解析XML实例分析
2015/01/30 Javascript
使用jquery清空、复位整个输入域
2015/04/02 Javascript
js实现类似jquery里animate动画效果的方法
2015/04/10 Javascript
Nodejs初级阶段之express
2015/11/23 NodeJs
JS常见疑难点分析之match,charAt,charCodeAt,map,search用法分析
2016/12/25 Javascript
js实现京东轮播图效果
2017/06/30 Javascript
Express+Nodejs 下的登录拦截实现代码
2017/07/01 NodeJs
详解webpack3如何正确引用并使用jQuery库
2017/08/26 jQuery
详解angularjs 学习之 scope作用域
2018/01/15 Javascript
vue 使用 sortable 实现 el-table 拖拽排序功能
2020/12/26 Vue.js
[13:25]VP vs VICI (BO3)
2018/06/07 DOTA
python简单实现获取当前时间
2016/08/27 Python
Python学习小技巧之利用字典的默认行为
2017/05/20 Python
Python实现读取txt文件并画三维图简单代码示例
2017/12/09 Python
python中ImageTk.PhotoImage()不显示图片却不报错问题解决
2018/12/06 Python
python3实现网络爬虫之BeautifulSoup使用详解
2018/12/19 Python
详解django+django-celery+celery的整合实战
2019/03/19 Python
在keras 中获取张量 tensor 的维度大小实例
2020/06/10 Python
Python持续监听文件变化代码实例
2020/07/22 Python
Python使用socket模块实现简单tcp通信
2020/08/18 Python
利用Python将多张图片合成视频的实现
2020/11/23 Python
详解如何用canvas画一个微笑的表情
2019/03/14 HTML / CSS
html5指南-1.html5全局属性(html5 global attributes)深入理解
2013/01/07 HTML / CSS
聪明的粉丝购买门票的地方:TickPick
2018/03/09 全球购物
2014年国庆节寄语
2014/09/19 职场文书
2014年公路养护工作总结
2014/12/04 职场文书
钱塘江大潮导游词
2015/02/03 职场文书
中秋晚会致辞
2015/07/31 职场文书
2016年教师党员公开承诺书
2016/03/24 职场文书
解决numpy数组互换两行及赋值的问题
2021/04/17 Python