版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
能力要求能通过学习本章知识,了解存储网络采集得到数据的方法。掌握HTML数据抽取的相关数据。熟悉数据存储到MySQL数据库的方法。找寻更适合采集数据得存储方法。1HTML正文抽取2MySQL数据库3更适合网络数据采集的MongoDB目录4.1HTML正文抽取4.1HTML正文抽取对HTML正文的抽取存储,主要是指将HTML文档的主要组成元素抽取出来。HTML正文存储为两种格式:JSON和CSV(Comma-SeparatedValues,逗号分隔符)。以一个小说阅读网为例,HTML正文抽取就是抽取出标题、章节、章节名称和链接。首先需要说明的是,这是一个静态网站,标题、章节、章节名称都不是由JavaScript动态加载的,这是下面所进行工作的前提。这个例子使用前面所介绍的BeautifulSoup和lxml两种方式进行解析抽取,力求将之前的知识进行灵活运用。1存储为JSON格式首先使用Requests访问小说阅读网,获取HTML文档内容,并且打印文档内容,相关代码如下。importrequestsUser_agent='Mozila/4.0(compatible;WindowsNT)Headers=('User-Agent';user_agent)r=requests.get('/',headers=headers)Printr.txt运行上述代码,得到的运行结果接着分析网站首页的HTML结构,确定要抽取标记的位置,分析如下:标题和章节都被包含在<divclass=mulu>标记下,标题位于<divclass=mulu-title>的<h2>中,章节位于<divclass=box>下的<a>中。经过上述的分析接下来就可以进行编码了,代码示例如下。Soup=BeautifulSoup(r.rtxt,'html,parser',from_encoding='utf-8')#html.parserFormuluinsoup.find_all(class_=mulu);h2=mulu.find('h2)Ifh2!=None;H2_title=h2.string#获取标题Forainmulu.find(class_='box').find_all('a');#获取a标记中URL和章节内容Href=a.get('href)Box_tirle=a.get('title)Printhref,box_title1存储为JSON格式存储为CSV格式CSV(Comma-SeparatedValues,逗号分隔值)是存储表格数据的常用文件格式。MicrosoftExcel和很多应用都支持CSV格式,因为它很简洁。和Python一样,CSV中的留白(whitespace)也是很重要的:每一行都用一个换行符分隔,列与列之间用逗号分隔(因此也叫“逗号分隔值”)。CSV文件还可以用Tab字符或其他字符分隔行,但是不太常见,用得不多。如果只想从网页上把CSV文件下载到计算机里,不打算做任何解析和修改,那么这节后面的内容就没必要再看了。只要用上一节里介绍的文件下载方法下载并保存为CSV格式就行了。Python的csv库可以非常简单地修改CSV文件,甚至从零开始创建一个CSV文件。网络数据采集的一个常用功能就是获取HTML表格并写入CSV文件。维基百科的文本编辑器对比词条中用了许多复杂的HTML表格,用到了颜色、链接、排序,以及其他在写入CSV文件之前需要忽略的HTML元素。用BeautifulSoup和get_text()函数,可以用十几行代码完成这件事。importcsvfromurllib.requestimporturlopenfrombs4importBeautifulSouphtml=urlopen(/wiki/Comparison_of_text_editors)bsObj=BeautifulSoup(html)#主对比表格是当前页面上的第一个表格table=bsObj.findAll(table,{class:wikitable})[0]rows=table.findAll(tr)csvFile=open(../files/editors.csv,'wt',newline=,encoding='utf-8')writer=csv.writer(csvFile)try:forrowinrows:csvRow=[]forcellinrow.findAll(['td','th']):csvRow.append(cell.get_text())writer.writerow(csvRow)finally:csvFile.close()1HTML正文抽取2MySQL数据库3更适合网络数据采集的MongoDB目录4.2MySQL数据库由于MySQL的安装文件比较大且配置稍显烦琐,本书推荐在普通环境下使用集成包,比如USBWebserver。Python没有内置的MySQL支持工具。不过,有很多开源的库可以用来与MySQL交互,比如Python2.x和Python3.x版本都支持,其中最有名的一个库就是PyMySQL(/PyMySQL/PyMySQL)。目前,PyMySQL的版本是0.6.2,可以用下面的命令下载并安装。#curl-L/PyMySQL/PyMySQL/tarball/pyMySQL-0.6.2|tarxz#cdPyMySQL-PyMySQL-f953785/#pythonsetup.pyinstall在数据采集中使用MySQL在Python中使用MySQL有两种方式,分别为ORM(对象关系映射)框架和数据库模块,在此使用数据库模块pyMySQL(Python3)。安装pyMySQL的代码如下。pipinstallpyMySQL直接使用print将数据打印了出来。现在使用pyMySQL将数据存储到MySQL中。此时需创建数据库toutiao和数据表data。修改的代码如下。修改的代码importrequestsimportjsonimportpyMySQLconn=pyMySQL.connect(host='localhost',port=3307,user='root',password='usbw',db='toutiao',charset='utf8')cursor=conn.cursor()url='/api/pc/focus/'wbdata=requests.get(url).textdata=json.loads(wbdata)news=data['data']['pc_feed_focus']forninnews:title=n['title']img_url=n['image_url']url=n['media_url']print(url,title,img_url)cursor.execute(INSERTINTOdata(title,img_url,url)VALUES('{0}','{1}','{2}');.format(title,img_url,url))mit()cursor.close()conn.close()1HTML正文抽取2MySQL数据库3更适合网络数据采集的MongoDB目录4.3更适合网络数据采集的MongoDBMongoDB是一个基于分布式文件存储的数据库,由C++语言编写,旨在为Web应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是目前非关系数据库当中功能最丰富、最像关系数据库的数据库。3.运行pymongo命令该命令的使用格式如下。pipinstallpymongo要想检测安装是否成功,可以使用如下命令在本地启动MongoDB。#mongd-dbpathl然后,在Python中,使用MongoDB的默认端口尝试连接MongoDB,示例如下。>frompymongoimportMongoClient>client=MongoClient('localhost',27017)Python操作MongoDB依然是扩展采集今日头条的例子,Python操作MongoDB的代码示例如下importrequestsimportjsonimportpymongoconn=pymongo.MongoClient(host='localhost',port=27017)toutiao=conn['toutiao']newsdata=toutiao['news']url='/api/pc/focus/'wbdata=requests.get(url).textdata=json.loads(wbdata)news=data['data']['pc_feed_focus']forninnews:title=n['title']img_url=n['image_url']url=n['media_url']data={'title':title,'img_url':img_url,'-id':url}newsdata.insert_one(data)foriinnewsdata.find():print(i)本章小结本章介绍3种通过网络数据采集所得到数据进行存储的方式,在不同的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高职单招考试语文试卷(含答案)
- 2026年季度财报审阅回复函(7篇)
- 建筑公司项目经理与施工队队长绩效评定表
- 智能制造质量数据监测与分析指南
- 商议2026年技术升级合作项目细节确认函4篇范文
- 2026年重庆机电控股集团公司人员招聘考试模拟试题及答案
- 关于市场拓展活动的开展通知函8篇范本
- 中国电信股份有限公司杭州分公司2027年秋季校园招聘67人笔试备考试题及答案解析
- 安徽省2027年度面向南开大学定向招录选调生笔试参考题库及答案解析
- 关于某活动的事宜商洽函7篇范本
- 2026年成都环境投资集团有限公司人员招聘笔试备考试题及详细答案解析
- T8联考2027届高三10月检测训练语文试题(含答案详解)
- 2.7 社会发展与工具和技术 课件(内嵌视频)2026-2027学年科学五年级上册教科版
- 2026上海药品审评核查中心公开招聘工作人员考试备考试题及答案解析
- 自考13180操作系统高频考点重点
- 2026-2027学年八年级上册语文1-3单元综合复习试卷
- 2026中国心理咨询服务平台用户留存率与商业模式可持续性报告
- 2026秋小学科学教科版六年级上册(新教材)教学计划附进度表
- 2026政工师答辩面试题及答案
- 2026 年大学秋季开学新生心态疏导班会
- 基于价格预测的A企业钢材动态订货策略研究
评论
0/150
提交评论