黑马程序员python基础班教程笔记:使

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

使⽤BeautifulSoup解析数据有的⼩伙伴们对写正则表达式的写法⽤得不熟练,没关系,我们还有⼀个更强⼤的⼯具,叫BeautifulSoup,有了它我们可以很⽅便地提取出HTML或XML标签中的内容,实在是⽅便,这⼀节就让我们⼀起来感受⼀下BeautifulSoup的魅⼒1.BeautifulSoup的简介简单来说,BeautifulSoup是python的⼀个库,最主要的功能是从⽹⻚抓取数据。官⽅解释如下:BeautifulSoup提供⼀些简单的、python式的函数⽤来处理导航、搜索、修改分析树等功能。它是⼀个⼯具箱,通过解析⽂档为⽤户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出⼀个完整的应⽤程序。BeautifulSoup⾃动将输⼊⽂档转换为Unicode编码,输出⽂档转换为utf-8编码。你不需要考虑编码⽅式,除⾮⽂档没有指定⼀个编码⽅式,这时,BeautifulSoup就不能⾃动识别编码⽅式了。然后,你仅仅需要说明⼀下原始编码⽅式就可以了。BeautifulSoup已成为和lxml、html6lib⼀样出⾊的python解释器,为⽤户灵活地提供不同的解析策略或强劲的速度。2.安装下载地址:官⽅⽂档:使⽤frombs4importBeautifulSoup我们创建⼀个字符串,后⾯的例⼦我们便会⽤它来演示创建beautifulsoup对象soup=BeautifulSoup(html)下⾯我们来打印⼀下soup对象的内容,格式化输出printsoup.prettify()3.1找标签我们可以利⽤soup加标签名轻松地获取这些标签的内容,是不是感觉⽐正则表达式⽅便多了?不过有⼀点是,它查找的是在所有内容中的第⼀个符合要求的标签对于标签,它有两个重要的属性,是name和attrs,下⾯我们分别来感受⼀下soup对象本身⽐较特殊,它的name即为[document],对于其他内部标签,输出的值便为标签本身的名称在这⾥,我们把p标签的所有属性打印输出了出来,得到的类型是⼀个字典。如果我们想要单独获取某个属性,可以这样,例如我们获取它的class叫什么3.2获取⽂字既然我们已经得到了标签的内容,那么问题来了,我们要想获取标签内部的⽂字怎么办呢?很简单,⽤.string即可,例如printsoup.p.string#TheDormouse'sstory3.3CSS选择器在CSS中,标签名不加任何修饰,类名前加点,id名前加#,在这⾥我们也可以利⽤类似的⽅法来筛选元素,⽤到的⽅法是soup.select(),返回类型是list3.3.1通过标签名查找printsoup.select('title')#[titleTheDormouse'sstory/title]3.3.2通过类名查找printsoup.select('.sister')#[aclass=sisterhref==link1!--Elsie--/a,aclass=sisterhref==link2Lacie/a,aclass=sisterhref==link3Tillie/a]3.3.3通过id名查找printsoup.select('#link1')#[aclass=sisterhref==link1!--Elsie--/a]3.3.4组合查找组合查找即和写class⽂件时,标签名与类名、id名进⾏的组合原理是⼀样的,例如查找p标签中,id等于link1的内容,⼆者需要⽤空格分开printsoup.select('p#link1')#[aclass=sisterhref==link1!--Elsie--/a]3.3.5直接⼦标签查找printsoup.select(headtitle)#[titleTheDormouse'sstory/title]3.3.6属性查找查找时还可以加⼊属性元素,属性需要⽤中括号括起来,注意属性和标签属于同⼀节点,所以中间不能加空格,否则会⽆法匹配到。同样,属性仍然可以与上述查找⽅式组合,不在同⼀节点的空格隔开,同⼀节点的不加空格printsoup.select('pa[href=]')#[aclass=sisterhref==link1!--Elsie--/a]以上的select⽅法返回的结果都是列表形式,可以遍历形式输出,然后⽤get_text()⽅法来获取它的内容。soup=BeautifulSoup(html,'lxml')printtype(soup.select('title'))printsoup.select('title')[0].get_text()fortitleinsoup.select('title'):printtitle.get_text()

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功