大数据采集与预处理(微课版) 课件 项目3、4 动态网页数据解析、基于框架实现动态网页数据采集与存储_第1页
大数据采集与预处理(微课版) 课件 项目3、4 动态网页数据解析、基于框架实现动态网页数据采集与存储_第2页
大数据采集与预处理(微课版) 课件 项目3、4 动态网页数据解析、基于框架实现动态网页数据采集与存储_第3页
大数据采集与预处理(微课版) 课件 项目3、4 动态网页数据解析、基于框架实现动态网页数据采集与存储_第4页
大数据采集与预处理(微课版) 课件 项目3、4 动态网页数据解析、基于框架实现动态网页数据采集与存储_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目三

动态网页数据解析目录Content1

使用BeautifulSoup解析“浪潮云说”网页数据2

使用Xpath解析“新闻动态”网页数据项目导言零请求部分解析部分网络爬虫程序通过模拟浏览器发送请求并获取响应通过对响应后返回的页面内容进行解析,并通过定位到数据所在元素获取数据,最终实现网页数据的采集学习目标零知识目标了解Xpath和BeautifulSoup相关概念熟悉Xpath节点定位掌握Xpath数据提取精通BeautifulSoup使用技能目标具备Xpath解析文档和提取数据的能力具备安装BeautifulSoup的能力具备使用BeautifulSoup提取页面数据的能力具备网页数据解析与提取的能力素养目标具备良好的沟通能力和团队合作精神具备强烈的责任感和积极的工作态度具备较强的执行能力任务3-1:使用Xpath解析“新闻动态”网页数据壹Xpath简介任务技能lxml解析库安装、lxml解析库使用定位元素定位、属性定位数据提取属性值提取、元素包含内容提取任务3-1:使用Xpath解析“新闻动态”网页数据壹1Xpath简介Xpath,英文全称为“MLPathLanguage”,是一种通过元素和属性遍历定位XML文档中信息的路径语言。尽管Xpath用于XML文档内容的搜索,但同样可以作用于HTML等半结构化文档。Xpath选择功能十分强大,通过简明的路径表达式,能够使用在大多数需要定位节点的场景中,不仅可以实现节点的定位外,Xpath还可以实现字符串、数值、时间的匹配以及节点、序列的处理等。任务3-1:使用Xpath解析“新闻动态”网页数据壹(1)lxml解析库安装Step1输入“/project/lxml/#files”,进入lxml源码文件下载界面选择符合Python版本的lxml源码文件并下载使用pip命令通过lxml源码文件进行lxml的安装打开Python的交互环境,输入importlxml,如果不报错,就表示安装成功Step2Step3Step4任务3-1:使用Xpath解析“新闻动态”网页数据壹(2)lxml解析库使用etree模块常用方法方法描述HTML()解析HTML文档XML()解析XML文档parse()解析文件tostring()将节点对象转化为bytes类型xpath()实现标签的定位和内容的捕获任务3-1:使用Xpath解析“新闻动态”网页数据壹①HTML()HTML方法包含参数参数描述text字符串类型的HTML文本parser解析器base_url网站根地址,用于处理网页资源的相对路径parser可选参数值参数值描述XMLParser解析XMLXMLPullParser利用事件流模型来解析XMLHTMLParser解析HTMLHTMLPullParser利用事件流模型来解析HTML任务3-1:使用Xpath解析“新闻动态”网页数据壹②

XML()XML()与HTML()方法基本相同,不同之处在于HTML主要用于对HTML文档内容进行解析,而XML()则用于解析XML格式文档。语法格式:fromlxmlimportetreeetree.XML(text,parser=None,base_url=None)任务3-1:使用Xpath解析“新闻动态”网页数据壹③parse()XML()和HTML()主要使用在数据采集之后,可以解析Requests、Urllib的request模块发送请求后响应的XML或HTML内容,而parse()方法则用于对本地文件中包含的内容进行解析。语法格式:fromlxmlimportetreeetree.parse(source,parser=None,base_url=None)任务3-1:使用Xpath解析“新闻动态”网页数据壹parse()方法包含参数参数描述source文件路径,包含xml、html、txt等格式文件parser解析器base_url网站根地址,用于处理网页资源的相对路径任务3-1:使用Xpath解析“新闻动态”网页数据壹④tostring()tostring()方法主要作用于Element对象,可以将Element对象包含内容转换为bytes类型。语法格式:fromlxmlimportetreeetree.tostring(Element,pretty_print=True,encoding="utf-8")任务3-1:使用Xpath解析“新闻动态”网页数据壹tostring()方法包含参数参数描述ElementElement对象pretty_print格式化输出,值为True或Falseencoding编码格式任务3-1:使用Xpath解析“新闻动态”网页数据壹⑤xpath()XPath()即为lxml的主要方法,可以解析XML或HTML文档并从中提取指定内容,其同样作用于Element对象。在使用时,其可以接收路径表达式提取数据,并将结果以Element对象列表的形式返回。语法格式:fromlxmlimportetreeetree.xpath(path,namespaces=None,extensions=None,smart_strings=True)任务3-1:使用Xpath解析“新闻动态”网页数据壹xpath方法包含参数参数描述path路径表达式namespaces名称空间extensions扩展smart_strings是否开启字符串的智能匹配任务3-1:使用Xpath解析“新闻动态”网页数据壹2定位(1)元素定位符号和方法描述/从根节点选取//从匹配选择的当前节点选择文档中的节点,不考虑它们的位置.选择当前节点..选取当前节点的父节点|设置多个路径表达式*匹配任何元素节点nodeName选取名为nodeName的所有节点nodeName[n]选取名为nodeName第n个节点nodeName[last()]选取名为nodeName最后一个节点nodeName[last()-n]选取名为nodeName倒数第n+1个节点nodeName[position()<n]选取名为nodeName前n-1个节点node()匹配任何类型的节点元素定位常用符号和方法任务3-1:使用Xpath解析“新闻动态”网页数据壹常用的元素定位表达式表达式描述//div从根节点选取所有div元素//div/p/a[2]选取第二个a元素//div/p[1]|//div/p[last()]选取第一个、最后1个p元素//div/*选取所有div节点下的任意元素节点任务3-1:使用Xpath解析“新闻动态”网页数据壹节点关系常用属性属性描述ancestor选取当前节点的所有先辈(父、祖父等)ancestor-or-self选取当前节点的所有先辈(父、祖父等)以及当前节点本身self选取当前节点child选取当前节点的所有子元素descendant选取当前节点的所有后代元素(子、孙等)descendant-or-self选取当前节点的所有后代元素(子、孙等)以及当前节点本身parent选取当前节点的父节点following选取文档中当前节点的结束标签之后的所有节点following-sibling选取当前节点之后的所有同级节点preceding选取文档中当前节点的开始标签之前的所有节点preceding-sibling选取当前节点之前的所有同级节点attribute选取当前节点的所有属性任务3-1:使用Xpath解析“新闻动态”网页数据壹属性定位常用符号符号描述@属性选取包含指定属性的元素@*选取包含任意属性的元素@[条件表达式]选取属性符合指定值的元素(2)属性定位任务3-1:使用Xpath解析“新闻动态”网页数据壹Xpath中常用的运算符关系运算符逻辑运算符算术运算符任务3-1:使用Xpath解析“新闻动态”网页数据壹3数据提取(1)属性值提取语法格式:nodeName/@属性在Xpath中,定位到节点后,只需通过“@属性”的方式获取该节点包含指定属性的属性值,并以列表的形式返回。任务3-1:使用Xpath解析“新闻动态”网页数据壹(2)元素包含内容提取语法格式:nodeName/text()相比于属性值的提取,元素包含内容的提取通过text()方法实现,内容包含文本、换行符、制表符等,并且结果同样以列表的形式返回。3-1:任务实施壹使用Xpath定位到每条新闻信息所在节点查看网页确认被采集的信息从lxml库导入etree模块,解析Urllib库获取的HTML文档通过tostring()方法将解析后返回的Element对象转换成bytes类型,验证是否抓取成功定位数据所在节点,并通过属性值提取或文本内容提取的方式实现电影名称、电影简介、电影评分和评价人数的获取将HTML文档解析代码封装为函数,添加获取下一页功能,并将数据存储到本地CSV文件中完成数据的解析和提取任务3-2:使用BeautifulSoup解析“浪潮云说”网页数据贰BeautifulSoup安装任务技能BeautifulSoup使用Python的pip工具安装BeautifulSoup有四个版本,在安装时只需在BeautifulSoup后添加版本号即可安装指定版本BeautifulSoup使用标签选择器、方法选择器、CSS选择器任务3-2:使用BeautifulSoup解析“浪潮云说”网页数据贰1BeautifulSoup安装Step1打开命令窗口,输入“pipinstallbeautifulsoup4”下载命令,进行BeautifulSoup4下载安装Step2使用“importbs4”方式导入BeautifulSoup解析库验证安装是否成功,不出现错误即可说明安装成功任务3-2:使用BeautifulSoup解析“浪潮云说”网页数据贰常见的解析器解析器优势劣势Python标准库Python的内置标准库执行速度适中文档容错能力强Python(2.7.3or3.2.2)前的版本中文档容错能力差lxmlHTML解析器速度快文档容错能力强需要安装C语言库lxmlXML解析器速度快唯一支持XML的解析器需要安装C语言库html5lib最好的容错性以浏览器的方式解析文档生成HTML5格式的文档速度慢任务3-2:使用BeautifulSoup解析“浪潮云说”网页数据贰2BeautifulSoup使用语法格式:importbs4bs4.BeautifulSoup(markup,parser)与Xpath解析器相同,BeautifulSoup同样不能直接用于网页内容的采集,其需要与Urllib、Requests等爬虫库结合使用。在使用时,通过BeautifulSoup()方法实现文档的解析。任务3-2:使用BeautifulSoup解析“浪潮云说”网页数据贰BeautifulSoup()方法包含参数参数描述markup文档parser解析器parser参数值参数值描述html.parserPython标准库lxmllxmlHTM解析器xmllxmlXML解析器html5libhtml5lib任务3-2:使用BeautifulSoup解析“浪潮云说”网页数据贰(1)标签选择器语法格式:importbs4soup=bs4.BeautifulSoup(markup,parser).node.parameter标签选择器主要用于通过文档中包含的标签进行元素的定位,有普通节点、子节点、子孙节点、父节点、兄弟节点等,并在定位节点后实现具体信息的获取。任务3-2:使用BeautifulSoup解析“浪潮云说”网页数据贰标签选择器参数参数描述name节点名称,通过“.”连接node关系节点获取属性,如兄弟节点、父节点等parameter数据提取属性parameter参数包含属性属性描述name获取节点的名称attrs['属性']获取节点所有属性string获取节点内容任务3-2:使用BeautifulSoup解析“浪潮云说”网页数据贰node参数包含属性属性描述contents直接子节点children子孙节点descendants所有子孙节点parent节点的父节点parents节点的祖先节点next_sibling节点下一个兄弟节点previous_sibling节点上一个兄弟节点next_siblings节点后面的全部兄弟节点previous_siblings节点前面的全部兄弟节点任务3-2:使用BeautifulSoup解析“浪潮云说”网页数据贰(2)方法选择器相比于标签选择器,只能通过标签名称逐级进行节点的定位,设置较为繁琐,灵活性不好,而方法选择器可以通过指定的参数设置标签以及相关属性实现节点的直接定位,实现节点包含内容的获取。BeautifulSoup常用方法选择器参数描述name节点名称,通过“.”连接node关系节点获取属性,如兄弟节点、父节点等任务3-2:使用BeautifulSoup解析“浪潮云说”网页数据贰语法格式:importbs4soup=bs4.BeautifulSoup(markup,parser)soup.find(name,attrs,recursive,text,**kwargs)soup.find_all(name,attrs,recursive,text,limit,**kwargs)在BeautifulSoup中,find()和find_all()方法选择器可以通过节点名称和节点包含属性与属性值在文档中查询符合条件的节点内容。任务3-2:使用BeautifulSoup解析“浪潮云说”网页数据贰(3)CSS选择器常用的CSS选择器CSS选择器描述select('title')获取标签为title的所有节点select('.sister')获取class为sister的所有节点select('#link')获取id为link的节点select('p#link')获取p节点下id为link的节点select('a[class="sister"]')获取class为sister的所有a节点select('pa[class="sister"]')获取p节点下class为sister的所有a节点3-2:任务实施贰完成数据的解析和提取通过循环语句遍历每个节点获取数据查看网页确认被采集的信息导入BeautifulSoup,解析Requests库获取的HTML文档通过find_all()方法定位到所有的云说标题节点和所有的发布时间节点,获取标签包含的内容将文档解析并提取数据的代码封装到parser函数,并添加采集下一页的代码导入csv模块,将采集到的数据存储到本地CSV文件中与您共同成长项目四

基于框架实现动态网页数据采集与存储目录Content1使用Scrapy框架完成新闻公告页面数据采集与存储项目导言零

Scrapy是Python的一个应用Twisted异步处理的第三方应用程序框架,用户只需要定制开发几个模块即可实现一个爬虫,用来快速爬取网站并从页面中抓取网页内容以及各种图片。学习目标零知识目标了解Scrapy相关概念熟悉Scrapy框架的设置掌握文本解析与内容存储精通内存存储逻辑技能目标具备项目创建的能力具备使用Scrapy操作命令创建Scrapy项目的能力具备解析网页中文本的能力具备网页数据采集能力素养目标具有较好的团队精神具有高度的责任感具备很强的学习和沟通能力具有清晰思路、较强的逻辑思维能力任务4-1:使用Scrapy框架完成新闻公告页面数据采集与存储壹任务技能Scrapy简介及安装Scrapy简介、Scrapy安装、Scrapy项目结构、Scrapy项目构建流程Scrapy操作指令在操作系统的任何位置均可以使用的全局命令应用于Scrapy项目中的项目命令字段定义及Scrapy设置自定义字段、项目设置、通用参数设置文本解析XPath选择器、CSS选择器内容存储文件存储、管道存储任务4-1:使用Scrapy框架完成新闻公告页面数据采集与存储壹1Scrapy简介及安装Scrapy是Python的一个第三方应用程序框架,主要用于爬取网站并从页面中提取结构数据。(1)Scrapy简介任务4-1:使用Scrapy框架完成新闻公告页面数据采集与存储壹ItemPipeline管道,负责处理Spider中获取到的Item,并进行详细分析、过滤、存储等内容的后期处理。Spiders爬虫,主要用于对Response进行处理,从特定的网页中分析提取数据,并在获取Item字段需要的数据后,将网络地址提交给引擎,再次进入Scheduler。Scheduler即调度器,接收ScrapyEngine的Request请求,多个请求会在整理排序后,等待ScrapyEngine需要时返回给ScrapyEngine。Scrapy

EngineScrapy引擎,能够进行系统数据流的处理、事务的触发等,完成Spiders、ItemPipeline、Downloader、Scheduler等模块之间数据的传输、信号的传递。Downloader下载器,通过ScrapyEngine的Requests请求下载网页内容,并返回包含网页内容的Response,然后由ScrapyEngine提交给Spiders进行处理。Scrapy框架任务4-1:使用Scrapy框架完成新闻公告页面数据采集与存储壹(2)Scrapy安装Scrapy属于Python的第三方框架,可以使用pip安装、wheel安装和源码安装等安装方式,并且在通过pip方式安装Scrapy时,会自动安装lxml、pyOpenSSL、Twisted、PyWin32等相关的依赖库。打开cmd命令窗口,输入“pipinstallscrapy”进入Python的交互式命令行,通过import引入Scrapy进行安装验证Step1Step2任务4-1:使用Scrapy框架完成新闻公告页面数据采集与存储壹(3)Scrapy项目结构任务4-1:使用Scrapy框架完成新闻公告页面数据采集与存储壹01030405060702items.py字段定义文件scrapy.cfg项目配置文件middlewares.py中间件设置文件spiders爬虫文件存储目录settings.py项目设置文件pipelines.py项目管道文件MySpider.py爬虫文件任务4-1:使用Scrapy框架完成新闻公告页面数据采集与存储壹(4)Scrapy项目构建流程通过Xpath或CSS选择器解析XML文档6文本解析在爬虫文件中,根据需求选择通用参数,爬取页面数据5通用参数设置4项目设置修改settings.py文件对项目名称、并发请求、爬取策略、项目管道等进行设置3爬虫文件创建通过genspider命令在spiders目录中创建爬虫文件2字段定义修改items.py文件代码,明确抓取的目标字段7修改pipelines.py代码,通过管道的设置实现爬取内容的存储数据存储1项目创建通过startproject命令创建爬虫项目任务4-1:使用Scrapy框架完成新闻公告页面数据采集与存储壹2Scrapy操作指令全局命令命令描述-h查看可用命令的列表fetch使用Scrapydownloader提取的URLrunspider未创建项目的情况下,运行一个编写好的spider模块settings规定项目的设定值shell给定URL的一个交互式模块startproject用于创建项目version显示Scrapy版本view使用Scrapydownloader提取URL并显示在浏览器中的内容genspider使用内置模板在spiders文件下创建一个爬虫文件bench测试scrapy在硬件上运行的效率任务4-1:使用Scrapy框架完成新闻公告页面数据采集与存储壹项目命令命令描述crawl用来使用爬虫抓取数据,运行项目check检查项目并由crawl命令返回list显示本项目中可用爬虫(spider)的列表edit可以通过编辑器编辑爬虫parse通过爬虫分析给定的URL任务4-1:使用Scrapy框架完成新闻公告页面数据采集与存储壹3字段定义及Scrapy设置(1)自定义字段

在进行网页内容的爬取时,明确目标是不可或缺的一个步骤。在Scrapy中,通过修改items.py文件中代码进行字段的自定义操作即可明确爬取的目标。语法格式:#导入scrapy模块importscrapy#定义包含scrapy.Item参数的类classScrapynameItem(scrapy.Item):#definethefieldsforyouritemherelike:#自定义字段name=scrapy.Field()#通过提示pass任务4-1:使用Scrapy框架完成新闻公告页面数据采集与存储壹除了通过“scrapy.Field()”方法外,还可以通过import命令从Scrapy中先引入Item和Field,之后直接使用即可。语法格式:#导入scrapy的Item参数和Field方法fromscrapyimportItem,Field#定义包含scrapy.Item参数的类classScrapynameItem(Item):#自定义字段name=Field();#通过提示pass任务4-1:使用Scrapy框架完成新闻公告页面数据采集与存储壹items.py文件中包含的内容仅为字段的定义,还需在MySpider.py文件中通过类名称引入items.py文件中class定义的类并实例化字段对象,之后通过“对象[字段名称]=值”的方式进行赋值操作。语法格式:importscrapy#导入ScrapynameItem类fromScrapyName.itemsimportScrapynameItemclassMyspiderSpider(scrapy.Spider):defparse(self,response):item=ScrapynameItem()item["name"]="值"任务4-1:使用Scrapy框架完成新闻公告页面数据采集与存储壹(2)项目设置Scrapy中项目的设置通过settings.py文件,通过指定项目属性和属性值定义设置项目,包括项目名称设置、并发请求设置、爬虫中间件设置等。任务4-1:使用Scrapy框架完成新闻公告页面数据采集与存储壹(3)通用参数设置通用spider参数参数描述scrapy.Spider通用SpiderCrawlSpider指定规则爬取网站XMLFeedSpider通过迭代节点分析XML内容任务4-1:使用Scrapy框架完成新闻公告页面数据采集与存储壹(1)XPath选择器4文本解析符号和方法描述nodeName选取此节点的所有节点/根节点//选择文档中的所有匹配节点.当前节点..当前节点的父节点@选取属性*匹配任何元素节点@*匹配任何属性节点Node()匹配任何类型的节点text()获取文本内容Xpath路径表达式包含符号和方法任务4-1:使用Scrapy框架完成新闻公告页面数据采集与存储壹在Scrapy中,路径表达式通过xpath()方法应用。语法格式:importscrapy#从scrapy.selector中导入Selectorfromscrapy.selectorimportSelectorclassMyspiderSpider(scrapy.Spider):name='MySpider'allowed_domains=['域名列表']start_urls=['网址列表']defparse(self,response):#构造Selector实例sel=Selector(response)#解析HTMLxpath=sel.xpath('表达式')pass任务4-1:使用Scrapy框架完成新闻公告页面数据采集与存储壹

在Scrapy中,CSS路径表达

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论