老师给我们提供了一个word文档,里面是一份信息行业热词解释手册,要求我们把里面的文字存进数据库里面,然后在前台展示出来。

首先面临的问题是怎么把数据导进MySQL数据库,大家都有自己的方法,我采用了将word转换成html文件,然后通过爬虫技术将内容提取出来保存到数据库。

写这篇博客的时候我刚存进数据库里,所以就介绍一下我的爬虫代码,下一篇将介绍通过微信小程序展示MySQL中的数据。

python的爬虫框架有很多,我用的是BeautifulSoup框架,首先要在头文件引用一下包from bs4 import BeautifulSoup

BeautifulSoup框架常用的用的一些函数有:

find()#获得一条map数据
find_all(name , attrs , recursive , string , **kwargs )#搜索当前tag的所有tag子节点,并判断是否符合过滤器的条件,获得list列表

select()#跟find_all类似,常用的是find_all(),可以通过select('#id')取得含有特定CSS属性的元素 
get_text()#返回一个tag节点内的文字

同学也有用xpath做爬虫的

XPath 是一门在 XML 文档中查找信息的语言。 
BeautifulSoup是一种在BeautifulSoup()处理后的树形文档中解析的语言 
re正则表达式只能对string类型对象进行解析 

下面是代码

from bs4 import BeautifulSoup
import pymysql #数据时从本地文件里来
def read_file(path):
#注意编码格式可能会出错
with open(path, 'r+', encoding='ANSI') as f:
str = f.read()
return str.strip().replace('\ufeff', '') # 解析目录数据
def parse_data(data):
#读取第一个MsoToc1和第二个MsoToc1之间的所有数据
for str1 in data.split('class=MsoToc1')[1:]:
bs = BeautifulSoup(str1, 'lxml')
index = 0
title1 = ""
title2 = ""
title3 = ""
try:
for tag in bs.select('a'):
strs = tag.get_text().split(' ')[0].rstrip()
if ('第' in strs and '篇' in strs):
title1 = tag.get_text().split(' ')[1].replace('.', '') elif ('第' in strs and '章' in strs):
title2 = tag.get_text().split(' ')[1].replace('.', '')
else:
index = strs;
title3 = tag.get_text().split(' ')[1].replace('.', '')
save(index, title1, title2, title3)
except:
print("数据有误,跳过执行")
bigdiv = data.split('class=WordSection3')[1]
for str1 in bigdiv.split('class=3132020')[1:]:
soup = BeautifulSoup('<p class=3132020 '+str1, 'lxml')
content = ""
index = int(soup.find('p', {'class': '3132020'}).get_text().split(' ')[0])
for tag in soup.find_all('p', {'class': '4'}):
content += tag.get_text()+'\r\n'
update(index,content)
return
#保存到数据库
def save(index,title1,title2,title3):
db = pymysql.connect(host='localhost', user='root', password='root', db='jaovo_msg')
conn = db.cursor() # 获取指针以操作数据库
conn.execute('set names utf8')
t = (int(index), title1, title2, title3)
sql = "INSERT INTO datasfromhtml(`index`,title1,title2,title3) values(%d,'%s','%s','%s')" % t try:
conn.execute(sql)
# 执行sql语句
db.commit()
except:
# 发生错误时回滚
db.rollback()
# 关闭数据库连接
db.close()
return #修改到数据库
def update(index,content):
db = pymysql.connect(host='localhost', user='root', password='root', db='jaovo_msg')
conn = db.cursor() # 获取指针以操作数据库
conn.execute('set names utf8')
t = (content,int(index))
sql = "update datasfromhtml set content = '%s' where `index` = %d" % t
try:
conn.execute(sql)
# 执行sql语句
db.commit()
except:
# 发生错误时回滚
db.rollback()
# 关闭数据库连接
db.close()
return if __name__ == '__main__':
str=read_file('../resource/HB.htm')
parse_data(str)

  

信息技术手册可视化进度报告 基于BeautifulSoup框架的python3爬取数据并连接保存到MySQL数据库的更多相关文章

  1. 信息技术手册可视化进度报告 基于jieba的关键字提取技术

    在这一篇博客之前,我已经将word文件中的内容通过爬虫的方式整理到数据库中了,但是为了前台展示的需要,还必须提取出关键字,用于检索. 我用的是jieba分词,GitHub地址:https://gith ...

  2. 基于scrapy框架输入关键字爬取有关贴吧帖子

    基于scrapy框架输入关键字爬取有关贴吧帖子 站点分析 首先进入一个贴吧,要想达到输入关键词爬取爬取指定贴吧,必然需要利用搜索引擎 点进看到有四种搜索方式,分别试一次,观察url变化 我们得知: 搜 ...

  3. 在ThinkPHP框架(5.0.24)下引入Ueditor并实现向七牛云对象存储上传图片同时将图片信息保存到MySQL数据库,同时实现lazyload懒加载

    这是我花了很多天的时间才得以真正实现的一组需求. 文章后面有完整Demo的GitHub链接. 一. 需求描述 1. 应用是基于ThinkPHP5开发的: 2. 服务器环境是LNMP,PHP版本是7.2 ...

  4. Scrapy框架——使用CrawlSpider爬取数据

    引言 本篇介绍Crawlspider,相比于Spider,Crawlspider更适用于批量爬取网页 Crawlspider Crawlspider适用于对网站爬取批量网页,相对比Spider类,Cr ...

  5. Python使用Scrapy框架爬取数据存入CSV文件(Python爬虫实战4)

    1. Scrapy框架 Scrapy是python下实现爬虫功能的框架,能够将数据解析.数据处理.数据存储合为一体功能的爬虫框架. 2. Scrapy安装 1. 安装依赖包 yum install g ...

  6. 基于Thinkphp5+phpQuery 网络爬虫抓取数据接口,统一输出接口数据api

    TP5_Splider 一个基于Thinkphp5+phpQuery 网络爬虫抓取数据接口 统一输出接口数据api.适合正在学习Vue,AngularJs框架学习 开发demo,需要接口并保证接口不跨 ...

  7. 基于webmagic的种子网站爬取

    代码地址如下:http://www.demodashi.com/demo/12175.html 1. 概述 因为无聊,闲来没事做,故突发奇想,爬个种子,顺便学习爬虫.本文将介绍使用Spring/Myb ...

  8. 第三百三十四节,web爬虫讲解2—Scrapy框架爬虫—Scrapy爬取百度新闻,爬取Ajax动态生成的信息

    第三百三十四节,web爬虫讲解2—Scrapy框架爬虫—Scrapy爬取百度新闻,爬取Ajax动态生成的信息 crapy爬取百度新闻,爬取Ajax动态生成的信息,抓取百度新闻首页的新闻rul地址 有多 ...

  9. scrapy框架综合运用 爬取天气预报 + 定时任务

    爬取目标网站: http://www.weather.com.cn/ 具体区域天气地址: http://www.weather.com.cn/weather1d/101280601.shtm(深圳) ...

随机推荐

  1. 虚拟现实外包—动点飞扬软件专门承接VR/AR场景、游戏、项目外包

    VR外包AR外包公司(虚拟现实外包公司)承接虚拟现实项目开发(企业.教育.游戏.企业大数据展示等) 有VR/AR.Unity3D项目.游戏外包业务欢迎 联系我们 QQ:372900288 TEL:13 ...

  2. 2.1 maven配置多镜像地址

    背景: 自己在平时写项目用的是阿里的镜像地址,而在开发公司的项目是用的是公司提供的镜像地址,这就导致了每次使用的时候 都需要来回的修改maven的settings.xml文件,这样很容易出错,而且还浪 ...

  3. 使用Selenium模块报错的解决办法 (FileNotFound,WebDriverException)

    添加Chrome浏览器程序的目录到系统Path变量中: C:\Users\%USERNAME%\AppData\Local\Google\Chrome\Application ,使用pip3 inst ...

  4. python 学习笔记 5 ----> dive into python 3

    字符串 文本:屏幕上显示的字符或者其他的记号 计算机认识的东西:位(bit)和字节(byte) 文本的本质:某种字符编码方式保存的内容. 字符编码:一种映射(显示的内容  ----> 内存.磁盘 ...

  5. selenium、UA池、ip池、scrapy-redis的综合应用案例

    案例: 网易新闻的爬取: https://news.163.com/ 爬取的内容为一下4大板块中的新闻内容 爬取: 特点: 动态加载数据  ,用 selenium 爬虫 1. 创建项目 scrapy ...

  6. FreeMaker入门介绍

    一.FreeMaker介绍 FreeMarker是一款免费的Java模板引擎,是一种基于模板和数据生成文本(HMLT.电子邮件.配置文件.源代码等)的工具,它不是面向最终用户的,而是一款程序员使用的组 ...

  7. jquery 判断浏览器版本

    如果你也是Jquery最初的使用者,那么你一定经历过这样判断浏览器的时代:$.browser.msie && $.browser.version,你目前使用的组件里可能还有应用.但是J ...

  8. FPM三:简单的SEARCH(OIF)

    这里是使用FPM Workbench自动生成的,没有去SE80创建WDA程序. 1.使用事务代码:FPM_WB.打开工作台. 2.点击Wizard for Creating Empty FPM App ...

  9. Hive - - 分组求最大,最小(加行键)

    Hive - - 分组求最大,最小(加行键) 数据: 1325927 陕西 汉中 084 08491325928 陕西 汉中 084 08491325930 陕西 延安 084 08421325931 ...

  10. Python3+Scapy安装使用教程

    一.说明 之前写DoS程序的时候(见"拒绝服务(DoS)理解.防御与实现"),数据包完全是自己构造的,这其中的难处一是要清楚各层协议的字段.字段长度.字段是数值还是字符.大头还是小 ...