Python爬虫(3)——将维基百科词条导入MySQL
来源:互联网 发布:好的淘宝零食点知乎 编辑:程序博客网 时间:2024/06/05 19:43
最近需要大量爬取数据,像之前那样存储在单个文件中已不合适,本文主要以维基百科为例,将爬取的词条数据导入到MySQL中。
在用Python连接MySQL之前,需要先安装一个Python包pymsql。
在Anaconda中的安装过程如下图所示;
1.Python连接MySQL数据库
在正式开始之前,先介绍下Python连接MySQL的标准流程。在Python中将数据存储到MySQL的流程主要包括连接数据库、创建会话、断开数据库连接等。
(1)连接数据库
connection = pymysql.connect(host = 'localhost', user = 'root', password = '123456', db = 'wikiurl', charset = 'utf8mb4')
(2)创建会话
在执行数据存储操作时,该会话会一直存在,在此期间主要执行创建sql语句、执行sql语句、提交结果等操作。
try: #获取会话指针 with connection.cursor() as cursor: #创建sql语句 sql = "insert into `urls` (`urlname`,`urlhref`) values (%s,%s)" #执行sql语句 cursor.execute(sql,(url.get_text(),"https://en.wikipedia.org" + url['href'])) #提交 connection.commit() finally: connection.close()
(3)断开数据库连接
connection.close()
2.将维基百科词条导入MySQL
代码如下所示:
# -*- coding: utf-8 -*-"""Created on Thu May 4 21:01:38 2017@author: zch"""from urllib.request import urlopenfrom bs4 import BeautifulSoupimport re import pymysql.cursors#请求URL并将结果用UTF-8编码response = urlopen('https://en.wikipedia.org/wiki/Main_Page').read().decode('utf-8')#用BeautifulSoup解析soup = BeautifulSoup(response,'lxml')#print(soup.head.title.string)#print(soup)#p_text = soup.find('a',href=re.compile(r"/wiki/Deaths_in_2017"))#print(p_text.name,p_text.get_text()) #获取所有以/wiki/开头的a标签的href属性listUrls = soup.find_all('a',href=re.compile('^/wiki/'))for url in listUrls: #过滤掉所有以.jpg或.JPG结尾的url if not re.search('\.(jpg|JPG)$',url['href']): #输出所有Wikipedia词条和对应的URL链接 print(url.get_text(),"---->","https://en.wikipedia.org" + url['href']) #获取数据库链接 connection = pymysql.connect(host = 'localhost', user = 'root', password = '123456', db = 'wikiurl', charset = 'utf8mb4') try: #获取会话指针 with connection.cursor() as cursor: #创建sql语句 sql = "insert into `urls` (`urlname`,`urlhref`) values (%s,%s)" #执行sql语句 cursor.execute(sql,(url.get_text(),"https://en.wikipedia.org" + url['href'])) #提交 connection.commit() finally: connection.close()
执行后MySQL数据库情况如下图所示:
如果在运行的过程中,出现以下认证错误的话:
URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749)>
可以导入ssl模块,并做全局设置:
import sslssl._create_default_https_context = ssl._create_unverified_context
0 0
- Python爬虫(3)——将维基百科词条导入MySQL
- python爬虫-百度百科词条
- 简单的python爬虫(爬取百度百科词条)
- Python爬虫,爬取百度百科词条
- Python爬虫爬取百度百科词条
- 用Python进行简单的爬虫(从Python百度百科中提取词条)
- Python网络爬虫(三):连续爬取百度百科词条数据
- Python简单爬虫开发的学习笔记整理(爬取百度百科词条)
- 使用python实现简单的百度百科词条爬虫
- python爬虫入门:1--爬取维基百科词条信息
- Python3爬取百科词条+导入MySQL数据库
- Java爬虫爬取python百度百科词条及相关词条页面
- 实践项目十:爬取百度百科Python词条相关1000个页面数据(慕课简单爬虫实战)
- Python3爬虫之四简单爬虫架构【爬取百度百科python词条网页】
- 使用eclipse+python编写爬虫获取python百科的1000条词条
- Python爬虫----实例: 抓取百度百科Python词条相关1000个页面数据
- Python爬虫(一)——爬取糗事百科
- Python 爬虫的实践运用(1)--爬取百度百科的词条
- ffmpeg中文文档
- Angular开发(七)-关于组件的生命周期
- Oracle AWR Reports: Understanding I/O Statistics
- 计算机专业方面的期刊介绍
- vue-router直接在html里面使用
- Python爬虫(3)——将维基百科词条导入MySQL
- plsql语法,存储过程,存储函数,触发器等概念
- C++第4次实验(基础班)—循环结构程序设计(参考答案)-项目7-4:加法算式
- 工作随笔---WiFi开发(2)---WIFIUtil类
- adb操作命令详解及大全
- mybatis中简易的多数据源
- 题目1020:最小长方形 九度OJ
- android studio 安装app一直卡在waiting for debug解决办法
- Java虚拟机学习笔记(2)——垃圾收集算法