Python3爬虫学习之MySQL数据库存储爬取的信息详解
作者:Veniendeavor 发布时间:2024-01-19 23:06:19
标签:Python3,爬虫,MySQL数据库
本文实例讲述了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为例,先分析抓取目标信息,
如上图,文章题目在a标签中,且url(href)只含有后半部分,所以在存储的时候,最好把它补全。
mysql:新建一个数据库pytest,建立一张名为titles的表,表中字段分别为id(int自增),title(varchar),url(varchar),如下:
进行数据库操作的思路为:获得数据库连接(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()
代码执行结果:
希望本文所述对大家Python程序设计有所帮助。
来源:https://www.jianshu.com/p/96abb2bbdb1b


猜你喜欢
- python作为一门动态语言,在使用变量之前是不需要进行定义,而是通过动态绑定的方法将变量绑定为某种类型。这样做为我们使用变量时提供了方便,
- 导语:哈喽,在经历了过年相亲这一环节,成了是好事💗,不成也是多认识一个人,见见"世面",也可以“开拓”一下眼界,说不定遇
- 一、数据集下载加州高速公路PEMS数据集这里绘制PEMS04中的交通流量数据。该数据集中包含旧金山2018年1月1日至2月28日的29条道路
- 本文实例讲述了Python enumerate函数功能与用法。分享给大家供大家参考,具体如下:eunmerate在英文中是列举、枚举的意思,
- 首先我们知道这个效果应该是一个老话题了。今天整理文件的时候,发现自己以前的一些布局的解决方法躺在文件夹里很长时间了,翻翻老底吧。需要说明的是
- 什么是F型浏览?2006年4月,美国长期研究网站可用性的著名网站设计师杰柯柏·尼尔森(Jakob Nielsen)发表了一项《眼球轨迹的研究
- 前言1.基准测试(benchmarking)是性能测试的一种类型,强调的是对一类测试对象的某些性能指标进行定量的、可复现、可对比的测试。进一
- 下载和安装安装 WTForms 最简单的方式是使用 easy_install 和 pip:easy_install WTForms# orp
- 昨天解决完数据库跨权限操作后,今天打开项目突然报错了,然后重启数据库时,报 ERROR! MySQL server PID file cou
- Selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE
- 父传子:1、 在父组件的子组件标签上通过 :传递到子组件的数据名="需要传递的数据"在这里为了大家区分我将父组件中的数据
- 今天遇到这个问题,上网查到以下解决方法:1.检查你的磁盘剩余空间是否足够,如果没有磁盘剩余空间,则清理磁盘,腾出空间
- 本文实例讲述了layer弹窗插件操作方法。分享给大家供大家参考,具体如下:1、首先去http://layer.layui.com/下载插件2
- 内容摘要:本文介绍了使用CSS结合javascript来实现对超链接的类型进行标注,让浏览者明确是zip,doc,pdf或其它格式的文件。这
- 目录什么是分区表分区表应用场景分区表的限制分区类型分区表的使用1、范围分区2、列表分区(list分区)3、列分区4、hash分区5、秘钥分区
- 目录解决MySQL主从数据库没有同步的两种方法一、不同步情况二、解决方案1.先进入主库,进行锁表,防止数据写入2.进行数据备份3.查看mas
- 昨天在这个上面找了好久的错,嘤嘤嘤~很多时候我们在爬取数据存储的时候都需要将当前时间作为一个依据,在python里面没有时间类型可以直接拿来
- 导航设计是结构层面设计中的主要工作之一,在软件中,导航设计的好坏,直接关系到用户使用是否能够流畅。面对较复杂的导航,我们第一反应是将其简化。
- 介绍在本文中,我们将使用 OpenCV 库来开发 Python 文档扫描器。OpenCV 的简要概述: OpenCV 是一个开源库,用于各种
- 1. 首先导入一些python画图的包,读取txt文件,假设我现在有两个模型训练结果的records.txt文件import numpy a