《数据采集技术》课件-Beautiful Soup_第1页
《数据采集技术》课件-Beautiful Soup_第2页
《数据采集技术》课件-Beautiful Soup_第3页
《数据采集技术》课件-Beautiful Soup_第4页
《数据采集技术》课件-Beautiful Soup_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

BeautifulSoupContents知识目标掌握BeautifulSoup使用方法技能目标提高数据采集和处理能力素养目标培养良好的信息素养和道德意识BeautifulSoup开发BeautifulSoup4版本,简称为bs4bs4是一个Python库,功能:OR中提取数据从节省大量工作时间提高开发项目效率可以通过转换器实现惯用的文档导航和查找方式bs4安装、使用安装bs4库:运行命令pipinstallbs4导入bs4库:通过语句frombs4importBeautifulSoupbs4安装、使用运行命令pipinstallbs4安装bs4库:导入bs4库:通过语句frombs4importBeautifulSoupbs4安装、使用使用bs4的一般流程:创建BeautifulSoup对象:根据要解析的或

,创建一个BeautifulSoup对象。调用BeautifulSoup的构造函数创建对象bs4安装、使用使用bs4的一般流程:搜索和遍历文档树:使用BeautifulSoup提供的方法来搜索和遍历文档树。使用find()或find_all()方法搜索满足特定条件的节点并使用点操作符和CSS选择器来访问节点的属性和文本。例如bs4安装、使用使用bs4的一般流程:提取和操作数据:一旦找到了所需的节点,可以访问:节点的名称节点的属性节点的文本并根据需要进行进一步的数据提取和处理。bs4安装、使用通过一个字符串或者类文件对象可以创建BeautifulSoup类的对象例如,根据字符串html_doc创建一个BeautifulSoup对象:示例:frombs4importBeautifulSoupsoup=BeautifulSoup(html_doc,'lxml')print(soup)运行结果:<html><head><title>TheDormouse'sstory</title></head><body><pclass="title"><b>TheDormouse'sstory</b></p><pclass="story">Onceuponatimetherewerethreelittlesisters;andtheirnameswere<aclass="sister"href="/lisi"id="link1">lisi</a>,<aclass="sister"href="/zhangsan"id="link2">zhangsan</a>and<aclass="sister"href="/wangwu"id="link3">wangwu</a>;andtheylivedatthebottomofawell.</p><pclass="story">...</p></body></html>创建BeautifulSoup实例时共传入两个参数。第一个参数表示包含被解析HTML文档的字符串,第二个参数表示使用lxml解析器进行解析。BeautifulSoup常见的解析器BeautifulSoup支持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,“html5lib”)最好的容错性以浏览器的方式解析文档生成HTML5格式的文档速度慢BeautifulSoup常见的解析器BeautifulSoup对象会根据当前系统安装的库自动选择解析器,选择顺序为:lxml如果没有指定解析器创建BeautifulSoup对象时:html5libPython标准库>>通过操作方法进行解读搜索bs4库内置了一些查找方法,其中常用的两个方法功能如下:find()方法findall()方法用于查找符合查询条件的第一个标签节点。查找所有符合查询条件的标签节点,并返回一个列表。两个方法用到的参数是一样的,以find_all()方法为例:find_all(self,name=None,attrs={},recursive=True,text=None,limit=None,**kwargs)通过一些查找方法获取文本或者标签属性通过操作方法进行解读搜索为了能获得这些有用的网页信息,可以通过一些查找方法获取文本或者标签属性。bs4库内置了一些查找方法,其中常用的两个方法功能如下:find()方法findall()方法用于查找符合查询条件的第一个标签节点。查找所有符合查询条件的标签节点,并返回一个列表。两个方法用到的参数是一样的,以find_all()方法为例:find_all(self,name=None,attrs={},recursive=True,text=None,limit=None,**kwargs)通过操作方法进行解读搜索示例1:soup.find_all('b')运行结果:[<b>TheDormouse'sstory</b>]示例2:fortaginsoup.find_all(pile("^b")):print()运行结果:bodybname参数:查找所有名字为name的标签,字符串会被自动忽略掉。具体示例如下:示例3:soup.find_all(["a","b"])运行结果:[<b>TheDormouse'sstory</b>,<aclass="sister"href="/lisi"id="link1">lisi</a>,<aclass="sister"href="/zhangsan"id="link2">zhangsan</a>,<aclass="sister"href="/wangwu"id="link3">wangwu</a>]传入字符串传入列表传入正则通过操作方法进行解读搜索示例1:soup.find_all(id='link2')运行结果:[<aclass="sister"href="/zhangsan"id="link2">zhangsan</a>]示例2:soup.find_all(href=pile("lisi"),id='link1')运行结果:[<aclass="sister"href="/lisi"id="link1">lisi</a>]keyword参数:若指定名字的参数不是搜索方法中内置的参数名,则会把该参数当作指定名称的标签中的属性来搜索。传入属性标签传入多个属性通过操作方法进行解读搜索keyword参数:若指定名字的参数不是搜索方法中内置的参数名,则会把该参数当作指定名称的标签中的属性来搜索。传入class标签示例3:soup.find_all("a",class_="sister")运行结果:[<aclass="sister"href="/lisi"id="link1">lisi</a>,<aclass="sister"href="/zhangsan"id="link2">zhangsan</a>,<aclass="sister"href="/wangwu"id="link3">wangwu</a>]通过操作方法进行解读搜索text参数:跟name参数的可选值一样,也可以接受字符串、正则表达式和列表等。soup.find_all(text="zhangsan")运行结果:[u'zhangsan']soup.find_all(text=["zhangsan","lisi","wangwu"])运行结果:[u'lisi',u'wangwu',u'zhangsan']find_all()方法返回的是标签的文本内容,而不是标签对象本身。通过操作方法进行解读搜索limit参数:限制返回结果的数量,其效果跟SQL语句中的limit关键字所产生的效果类似。soup.find_all("a",limit=2)运行结果:[<aclass="sister"href="/elsie"id="link1">lisi</a>,<aclass="sister"href="/lacie"id="link2">zhangsan</a>]一旦搜索到结果的数量达到了limit的限制时,就会停止搜索。通过操作方法进行解读搜索recursive参数:如果只想搜索当前节点的直接子节点,那么就可以使用参数recursive=False。soup.html.find_all("title")运行结果:[<title>TheDormouse'sstory</title>]soup.html.find_all("title",recursive=False)运行结果:[]recursive=False通过操作方法进行解读搜索recursive参数:如果只想搜索当前节点的直接子节点,就可以使用参数recursive=False。soup.html.find_all("title")运行结果:[<title>TheDormouse'sstory</title>]soup.html.find_all("title",recursive=False)运行结果:[]通过操作方法进行解读搜索示例1:通过标签查找:soup.select("title")运行结果:[<title>TheDormouse'sstory</title>]示例2:通过类名查找:soup.select(".sister")运行结果:[<aclass="sister"href="/lisi"id="link1">lisi</a>,<aclass="sister"href="/zhangsan"id="link2">zhangsan</a>,<aclass="sister"href="/wangwu"id="link3">wangwu</a>]select()方法,会将CSS选择器搜索到的结果放到列表中。通过操作方法进行解读搜索BeautifulSoup类中提供了一个select()方法,该方法会将CSS选择器搜索到的结果放到列表中。示例3:通过id名查找:soup.select('#link1')运行结果:[<aclass="sister"href="/lisi"id="link1">lisi</a>]示例4:通过组合查找:soup.select("p#link1")soup.select('head>title')运行结果:[<aclass="sister"href="/lisi"id="link1">lisi</a>][<title>TheDormouse'sstory</title>]通过操作方法进行解读搜索以上查找方法都会返回一个列表。遍历这个列表,可以调用get_text()方法来获取节点的内容。forele

温馨提示

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

评论

0/150

提交评论