版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Python数据爬取第九章新工科建设之路·数据科学与大数据系列Python实战之数据库应用和数据库获取1爬虫基础1.爬虫基础在开始分词与词频统计项目之前,我们先了解几个库。12pyecharts库pyecharts库是一个用于生成Echarts图表的类库。Echarts是百度开源的一个数据可视化JS库。用Echarts生成的图可视化效果非常棒,pyecharts用于与Python进行对接,方便在Python中直接使用数据生成图。关于pyecharts库的更多信息可以查看官方网站:htp://.jieba分词库jieba(结巴)是一个强大的分词库,完美支持中文分词。jieba支持以下3种分词模式。①精确模式:将句子以最精确的方式切开,适合文本分析。②全模式:把句子中所有可以成词的词语都扫描出来,速度非常快,但是不能解决词语的歧义问题。③搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。jieba分词库还支持繁体分词和自定义词典。在开始分词与词频统计项目之前,我们先了解几个库。34BeautifulSoup库BeautifulSoup库是用Python写的一个HTML/XML解析器,主要功能是从网页爬取需要的数据。BeautifulSoup库可以很好地处理不规范标记并生成剖析树(parsetree).,提供简单又常用的导航(navigating)、搜索和修改剖析树的操作。BeautifulSoup库将HTML解析为对象进行处理,全部页面转变为字典或者数组,相对于正则表达式的方式,可以大大简化处理过程。Requests库Requests库是Python的一个实用的HTTP客户端库,完全满足如今网络爬虫的需求。在开发使用上,Requests库语法简单易懂,完全符合Python优雅、简洁的特性。在兼容性上,Requests库完全兼容Python2和Python3。1.爬虫基础2库的安装与使用2.库的安装与使用2.1在Python中,pyecharts库的安装方式如下:pyecharts库的安装与使用pyecharts库的使用示例如下(pyecharts_exp.py):
在当前目录下创建一个名为static的文件夹,执行该示例代码,会在static目录下生成一个名为pyecharts_exp.html的HTML文件。直接用Chrome或其他浏览器打开这个HTML文件,能看到一张如图9-1所示的图。2.库的安装与使用2.2在Python中,jieba分词库的安装方式如下:jieba分词库的安装与使用jieba分词库的使用示例如下(jieba_exp.py):2.库的安装与使用执行示例代码,得到如下结果:2.库的安装与使用2.3在Python中,BeautifulSoup库的安装方式如下:BeautifulSoup库的安装与使用BeautifulSoup库的使用示例如下(beautiful_soup_exp.py):2.库的安装与使用执行示例代码,得到如下结果:2.4Requests库可以通过pip安装,安装语句如下:Requests库的安装与使用HTTP常用请求有GET和POST两种,Request库区分不同的请求方式,下面以GET请求为例介绍。Requests库实现GET请求示例如下(get_exp.py):2.库的安装与使用2.库的安装与使用3分词与词频统计实战3.分词与词频统计实战经过前面两节知识点的讲解,现在我们结合这些知识点实现以下功能:①从一个指定网站爬取对应数据,本章以爬取百度知道的内容为例,根据输入指定关键字(关键字不能为空),爬取用该关键字搜索到的问题标题和问题回答,并对问题标题以搜索引擎模式进行分词。②将①中爬取的问题标题、问题回答和分词结果保存到MySQL数据库中。③数据爬取结束并保存到数据库后,从MySQL数据库中取出保存的记录,根据保存的分词结果进行统计,经过给定的关键词库进行过滤后,统计各关键词出现的次数,并以图表的形式展现出来。根据以上要求,下面介绍具体的实现方式。3.1在chapter9文件夹下创建一些文件或文件夹,功能介绍分别如下。整体结构设计①database文件夹用于存放与数据库直接关联的文件。models.py文件用于编写模型对象,即数据库表对应的对象,以及表的增、删、改、查的编写。mongo_conn.py文件用于编写MongoDB数据库连接代码。②rule文件夹用于存放定义的规则,key_words.py文件用于编写关键词库的集合。③server文件夹用于编写操作MySQL数据库的逻辑业务。getinputinfo..py文件用于读取从控制台输入的参数值。info_search.py文件用于编写数据爬取代码,以及将爬取数据处理后保存到数据库的逻辑。word_count.py文件用于编写词频统计和生成图表逻辑。3.分词与词频统计实战④mongo_server文件夹用于编写操作MongoDB数据库的逻辑业务。get_input_info.py文件用于读取从控制台输入的参数值。mongo_info_search.py文件用于编写数据爬取代码,以及将爬取数据处理后保存到数据库的逻辑。mongo_wordcount..py文件用于编写词频统计和生成图表逻辑。⑤static文件夹用于存放静态HTML文件。mongo_rum.py文件为使用非关系型数据库进行操作的项目入口。⑦run.py文件为使用关系型数据库进行操作的项目入口。其完整代码将在9.4节展示,下面对其逻辑进行讲解,并以代码辅助。3.分词与词频统计实战3.2根据前面的整体结构设计,数据结构设计代码编写在models.py文件中,定义了NLPAnalysis类,类中定义tablename的值为nlpanalysis,即表名为nlp_analysis。再定义4个字段,命名分别为id(主键,Integer类型)、questiontitle(问题标题,String,长度为200)、question_answer(问题答案,String,长度为500)和fenciresult(标题分词结果,String,长度为1000)。代码实现如下(models.py):数据结构设计3.分词与词频统计实战若使用MongoDB,不需要设计数据结果,但需要获取数据库和集合的连接。封装数据库、集合获取代码示例如下(mongo_conn.py):3.分词与词频统计实战3.3根据从getinputinfo.py文件中获取的输入参数,去指定网站根据指定关键字进行数据爬取。数据爬取的关键点如下。分析网页,分析需要用GET请求还是POST请求,如/。经分析,要使用的是GET请求(此处不做具体爬虫方法的介绍,可自行查询资料解决,如在浏览器搜索:查看HTTP请求详情,会显示很多答案)。接着,分析请求头的构造形式,再分析进行关键字搜索时,参数的构造形式是怎样的,关键字怎样放入URL请求中,定位到某一页的请求参数是怎样的,由此构造一个通用的字符串参数。最后,分析问题标题和问题答案所对应的是哪些标签的内容。这部分逻辑代码实现如下,定义get_data_from_web方法(info_search.py):数据的爬取与保存3.分词与词频统计实战3.分词与词频统计实战其中,get_detail_info()方法实现如下:Jie_ba_fen_ci()方法实现如下:3.分词与词频统计实战问题标题、问题答案和分词结果取得后,接下来需要把这些获取的信息保存到数据库中。保存数据时,将需要保存的数据以一个对象的形式传递给模型,在get_data_from_web()方法中需要加入以下代码:同时,需要在models.py中添加以下方法:3.分词与词频统计实战至此实现了数据的爬取和数据的持久化,完整代码可在9.4节中查看。若使用MongoDB作为数据库,则只需将get_data_from_web()方法中的代码:改为:并导入数据库,连接获取模块即可。3.分词与词频统计实战3.4爬取数据后,需要分析哪些关键词对于词频分析是有用的,哪些是无用的,有用的保留,无用的则过滤。下面是一个简单的关键词搜集示例,这些可以视为有用的关键词,代码如下(key_words.py):制定关键词库3.分词与词频统计实战3.5有了数据和关键词比对规则后,接下来要做的是从数据库取出数据,根据过滤规则过滤后,统计满足规则的各词的出现次数。定义word_counto方法,代码如下(word_count.py):词频统计与图表生成3.分词与词频统计实战query_.from_mysql()的实现如下:若使用MongoDB,则query._from_mysq1()的实现示例如下:在models.py文件中需要添加如下方法:3.分词与词频统计实战统计工作完成后,最后需要根据统计结果绘制图表。以绘制水平图表为例,实现代码如下:在word_count()方法的最后需要调用该方法,以达到统计结束后就绘制统计图的效果。完整代码见9.4节。3.分词与词频统计实战4分词和词频统计的完整代码4.分词和词频统计的完整代码程序入口代码如下(run.py):4.1MySQL操作处理的完整代码根路径配置代码如下(config.py):模型实现代码如下(models.py):4.分词和词频统计的完整代码取得输入参数实现代码如下(get_input_info.py):4.分词和词频统计的完整代码4.分词和词频统计的完整代码从网站取得数据并存储到数据库的实现代码如下(info_search.py):4.分词和词频统计的完整代码4.分词和词频统计的完整代码有效关键词实现代码如下(key_words.py):词频统计并生成统计图,为了更直观地查看统计图效果,本例中生成3种统计图:水平图表、饼图、词云图。代码实现如下(word_count.py):4.分词和词频统计的完整代码4.分词和词频统计的完整代码执行unpy文件,从控制台输入如下信息:输入信息后,控制台打印出如下信息:4.分词和词频统计的完整代码在static文件夹下将生成如图9-2所示的静态HTML文件。用Chrom浏览器打开bar_horizontal.html文件,得到如图9-3所示的水平图表。用Chrom浏览器打开pie.html文件,得到如图9-4所示的饼图统计图。4.分词和词频统计的完整代码用Chrom浏览器打开wordcloud.html文件,得到如图9-5所示的词云图统计图。至此完成了分词和生成统计图的功能。在该项目中也可以生成更多其他形式的统计图,也可以将该项目扩展为功能更加强大的项目,可以写入CSV文件和发送邮件,加入提醒相关人员对应的信息的功能。4.分词和词频统计的完整代码程序入口实现示例代码如下(mongo_run.py):4.2MongoDB操作处理的完整代码实现码4.分词和词频统计的完整代码接下来的PY文件与关系型数据库中对应PY文件的差别不大,此处不具体提供示例代码,只提供示例代码文件名,读者可以从Github上clone。取得MongoDB数据库连接的示例代码见mongo_conn.py.取得输入参数的示例代码见mongo_server/get_input_info.py.取得数据并存储到MongoDB数据库的示例代码mongo_server/mongo_info_search.py.词频统计并生成
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小班关于石头课程设计
- 混凝土简支梁课程设计
- 2024年碳排放权交易合同详解
- 2024年度外线电缆敷设与线路调整合同3篇
- 乡村教育课程设计
- 2024年特种鱼苗繁育与销售合同范本3篇
- 泵与泵站课程设计参考
- 怎样把课程设计成游戏
- 本量利分析课程设计
- 2024年度员工入职与员工手册及规章制度协议3篇
- T-CFIAS 3010-2023 饲料添加剂 乙氧基喹啉
- PS平面设计练习题库(附参考答案)
- 混合云架构整体设计及应用场景介绍
- 2024 潮玩行业专题报告:一文读懂潮流玩具消费新趋势
- 六年级上册分数乘除混合运算300题带答案
- 北京市西城区2022-2023学年六年级上学期语文期末试卷(含答案)
- 华东师范大学《法学导论I》2022-2023学年第一学期期末试卷
- 2024.8.1十七个岗位安全操作规程手册(值得借鉴)
- 小王子-英文原版
- 垫付协议合同范例
- 2024年高一语文期末复习训练-非连续性文本阅读
评论
0/150
提交评论