版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
能力要求能通过学习本章知识,掌握使用正则表达式解析网页的方法。能通过学习本章知识,掌握使用正则表达式解析网页的方法。能通过学习本章知识,掌握lxml工具解析网页的方法解析采集到的网页解析采集到的网页HTML网页数据的解析、提取是Python网络数据采集开发中的非常关键的步骤。HTML网页的解析、提取有很多方法,本章将从3个方面进行讲解。前面已经了解了网页的结构并且采集得到了网页的数据和信息,下面将要介绍3种解析网页数据的方法。首先是正则表达式,然后是流行的BeautifulSoup模块,最后是强大的lxml模块。1使用正则表达式解析2使用BeautifulSoup解析3使用lxml解析目录4解析方法的优缺点对比3.1使用正则表达式解析简单地说,正则表达式是一种可以用于模式匹配和替换的强大工具。在几乎所有的基于UNIX/Linux系统的软件工具中都可以找到正则表达式的痕迹,如Perl或PHP脚本语言。此外,JavaScript这种脚本语言也提供了对正则表达式的支持。现在正则表达式已经成为了一个通用的工具,被各类技术人员所广泛使用。正则表达式是一个很强大的字符串处理工具,几乎任何关于字符串的操作都可以使用正则表达式来完成。作为一个数据采集工作者,每天和字符串打交道,正则表达式更是不可或缺的技能,正则表达式在不同开发语言中的使用方式可能不一样,不过只要学会了任意一门语言的正则表达式用法,其他语言中大部分也只是换了个函数的名称而已,本质都是一样的。模式描述模式描述.匹配任意字符(不包括换行符)\A匹配字符串开始位置,忽略多行模式^匹配开始位置,多行模式下匹配每一行的开始\Z匹配字符串结束位置,忽略多行模式$匹配结束位置,多行模式下匹配每一行的结束\b匹配位于单词开始或结束位置的空字符串*匹配前一个元字符0到多次\B匹配不位于单词开始或结束位置的空字符串+匹配前一个元字符1到多次\d匹配一个数字,相当于[0-9]?匹配前一个元字符0到1次\D匹配非数字,相当于[^0-9]{m,n}匹配前一个元字符m到n次\s匹配任意空白字符,相当于[\t\n\r\f\v]Python与正则表达式正则表达式是一个特殊的字符序列,它能帮助你方便地检查一个字符串是否与某种模式匹配。Python自1.5版本就增加了re模块,提供Perl风格的正则表达式模式。re模块使Python语言拥有全部的正则表达式功能。compile函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。Re模块也提供了与这些方法功能完全一致的函数。这些函数使用一个模式字符串作为它们的第一个参数。下面主要介绍Python中常用的正则表达式处理函数。1.re.match函数2.re.search函数re.search函数用于扫描整个字符串并返回第一个成功的匹配。3.re.match与re.search的区别re.match只匹配字符串的开始位置,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。1使用正则表达式解析2使用BeautifulSoup解析3使用lxml解析目录4解析方法的优缺点对比3.2使用BeautifulSoup解析什么是网页解析器?简单地说,网页解析器就是用来解析HTML网页的工具,准确地说:它是一个HTML网页信息提取工具,就是从HTML网页中解析提取出“需要的有价值的数据”或者“新的URL链接”的工具。Python有以下几种网页解析器:正则表达式、html.parser、BeautifulSoup、lxml。常见的Python网页解析工具有:re正则匹配、Python自带的html.parser模块、第三方库BeautifulSoup(重点学习)以及lxm库。BeautifulSoup第三方库BeautifulSoup是一个可以从HTML或XML文件中提取数据的Python库。它能够通过你喜欢的转换器实现惯用文档导航、查找、修改文档等操作。在基于Python的数据采集开发中,主要用到的是BeautifulSoup的查找提取功能,修改文档方式很少用到。可以说,BeautifulSoup是一个非常流行的Python模块。简单来说,BeautifulSoup是Python的一个库,最主要的功能是从网页抓取数据。BeautifulSoup提供一些简单的、Python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。BeautifulSoup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。不需要考虑编码方式,除非文档没有指定一个编码方式。这时,BeautifulSoup就不能自动识别编码方式了。然后,仅仅需要说明一下原始编码方式就可以了。BeautifulSoup已成为和lxml、html6lib一样出色的Python解析器,为用户灵活地提供不同的解析策略或强劲的速度。安装beautifulsoup4接下来介绍BeautifulSoup在Python网络数据采集开发中的使用。该模块可以解析网页,并提供定位内容的便捷接口。如果还没有安装该模块,可以使用下面的命令安装其最新版本。pipinstallbeautifulsoup4BeautifulSoup发布时打包成Python2版本的代码,在Python3环境下安装时,会自动转换成Python3的代码,如果没有一个安装的过程,那么代码就不会被转换。如果代码抛出了ImportError的异常“NomodulenamedHTMLParser”,则表明你在Python3版本中执行Python2版本的代码。如果代码抛出了ImportError的异常“Nomodulenamedhtml.parser”,则表明你在Python2版本中执行Python3版本的代码。如果遇到上述两种情况,最好的解决方法是重新安装beautifulsoup4。如果在ROOT_TAG_NAME=u'[document]'代码处遇到SyntaxError"Invalidsyntax"错误,需要将把bs4的Python代码版本从Python2转换到Python3,然后重新安装bs4。python3setup.pyinstallBeautifulSoup语法3.BeautifulSoup语法使用BeautifulSoup的一般流程有3个步骤。(1)创建BeautifulSoup对象。(2)使用BeautifulSoup对象的操作方法find_all与find进行解读搜索,示例如下。>>>>soup.find_all('a')>>>>soup.find('a')1使用正则表达式解析2使用BeautifulSoup解析3使用lxml解析目录4解析方法的优缺点对比3.3使用lxml解析前面介绍了BeautifulSoup的用法,这个已经是非常强大的库了,不过还有一些比较流行的解析库,例如lxml,使用的是Xpath语法,同样是效率比较高的解析方法。如果大家对BeautifulSoup使用不太习惯的话,可以尝试下lxml。安装lxmlPython标准库中自带了xml模块,但是性能不够好,而且缺乏一些人性化的API。相比之下,第三方库lxml是用Cython实现的,而且增加了很多实用的功能,可谓网络数据采集处理网页数据的一件利器。lxml大部分功能都存在于lxml.etree中。pipinstalllxml也可以使用easy_install工具下载lxml模块。Python3.x之后就集成了pip、easy_install等工具可以用来直接下载Python所需的模块。但如果使用的是Python3.4.3,当使用pip下载lxml,则会出现各种依赖问题。1使用正则表达式解析2使用BeautifulSoup解析3使用lxml解析目录4解析方法的优缺点对比3.4解析方法的优缺点对比推荐使用lxml作为解析器,因为效率更高,不过在Python2.7.3之前的版本和Python3中3.2.2之前的版本,必须安装lxml或html5lib,因为那些Python版本的标准库中内置的HTML解析方法不够稳定。解析器使用方法优势劣势Python标准库BeautifulSoup(markup,"html.parser")Python的内置标准库;执行速度适中;文档容错能力强Python2.7.3or3.2.2)前的版本中文档容错能力差lxmlHTML解析器BeautifulSoup(markup,"lxml")速度快;文档容错能力强需要安装C语言库lxmlXML解析器BeautifulSoup(markup,["lxml","xml"])BeautifulSoup(markup,"xml")速度快;唯一支持XML的解析器需要安装C语言库html5libBeautifulSoup(markup,"
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《S素养教育材料》课件
- 2024年度灯具生产挂靠合同
- 2024年度临时救援包车运输合同
- 2024年度智能家居研发与定制合同
- 2024年度水果店广告投放合同
- 2024年度游戏运营授权合同
- 2024年度旅游景点开发管理合同
- 2024年度商场停车场车位租赁合同
- 2024年度房地产交易居间保密合同
- 影城新员工培训
- 2024年度智能家居解决方案合同
- 2024-2030年中国汽车再制造行业产销量预测及投资战略研究报告
- 2024厨房设备购销合同
- 媒体行业内容创作与传播平台搭建方案
- 购买海外房产合同
- 曾明荣新安全生产法培训
- 消防安全知识
- 济宁学院《休闲体育学》2021-2022学年第一学期期末试卷
- 小学信息科技《数据与编码-探索生活中的“编码”》教学设计
- 东南亚文化学习通超星期末考试答案章节答案2024年
- 2024年云网安全应知应会考试题库
评论
0/150
提交评论