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调用机器喇叭发出蜂鸣声(Beep)的方法
Mar 23 Python
python删除列表内容
Aug 04 Python
Python的Flask框架应用程序实现使用QQ账号登录的方法
Jun 07 Python
使用Python生成XML的方法实例
Mar 21 Python
python基础之入门必看操作
Jul 26 Python
Python实现的矩阵转置与矩阵相乘运算示例
Mar 26 Python
在Python中COM口的调用方法
Jul 03 Python
通过python实现随机交换礼物程序详解
Jul 10 Python
python中下标和切片的使用方法解析
Aug 27 Python
Python scipy的二维图像卷积运算与图像模糊处理操作示例
Sep 06 Python
python 遍历pd.Series的index和value
Nov 26 Python
基于Python组装jmx并调用JMeter实现压力测试
Nov 03 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
Adodb的十个实例(清晰版)
2006/12/31 PHP
PHP Undefined index报错的修复方法
2011/07/17 PHP
关于PHP内存溢出问题的解决方法
2013/06/25 PHP
利用laravel+ajax实现文件上传功能方法示例
2017/08/13 PHP
解决在Laravel 中处理OPTIONS请求的问题
2019/10/11 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
2020/02/18 PHP
Gird组件 Part-3:范例RSSFeed Viewer
2007/03/10 Javascript
JavaScript中的Window窗口对象
2008/01/16 Javascript
10个新的最有前途的JavaScript框架
2009/03/12 Javascript
chrome原生方法之数组
2011/11/30 Javascript
ejs v9 javascript模板系统
2012/03/21 Javascript
经过绑定元素时会多次触发mouseover和mouseout事件
2014/02/28 Javascript
js函数名与form表单元素同名冲突的问题
2014/03/07 Javascript
JavaScript实现弹出子窗口并传值给父窗口
2014/12/18 Javascript
简单讲解jQuery中的子元素过滤选择器
2016/04/18 Javascript
详解JavaScript异步编程中jQuery的promise对象的作用
2016/05/03 Javascript
javascript类型系统——日期Date对象全面了解
2016/07/13 Javascript
详解Vue 2.0封装axios笔记
2017/06/22 Javascript
angular2 ng build部署后base文件路径问题详细解答
2017/07/15 Javascript
vue-rx的初步使用教程
2018/09/21 Javascript
[01:05]DOTA2完美大师赛趣味视频之选手教你打职业
2017/11/23 DOTA
python在windows和linux下获得本机本地ip地址方法小结
2015/03/20 Python
Python实现的选择排序算法原理与用法实例分析
2017/11/22 Python
python logging 日志的级别调整方式
2020/02/21 Python
python烟花效果的代码实例
2020/02/25 Python
使用python无账号无限制获取企查查信息的实例代码
2020/04/17 Python
Python3创建Django项目的几种方法(3种)
2020/06/03 Python
pycharm专业版远程登录服务器的详细教程
2020/09/15 Python
一款利用纯css3实现的360度翻转按钮的实例教程
2014/11/05 HTML / CSS
Bootstrap 学习分享
2012/11/12 HTML / CSS
LightInTheBox法国站:中国跨境电商
2020/03/05 全球购物
解释一下抽象方法和抽象类
2016/08/27 面试题
介绍一下RMI的基本概念
2016/12/17 面试题
2014年建筑工程工作总结
2014/12/03 职场文书
MySQL中utf8mb4排序规则示例
2021/08/02 MySQL
opencv深入浅出了解机器学习和深度学习
2022/03/17 Python