Beautifulsoup 库入门 2020-04-21





手动获取源代码



我们也可以用requests方法来获取网页的html信息

我们输入import requests ,然后用get函数来获得这个链接所对应的内容

显示一下这个文本,这时候显示的就是这个页面的html内容

我们可以定义一个变量demo来简化一下,令 demo = r.text

下面对beautifulsoup库进行一个小测,输入 from bs4 import BeautifulSoup 

尽管我们安装这个库的时候安装的是beautifulsoup4 ,但是我们使用的时候用的是它的简写bs4

所以我们 from bs4这个库,然后导入了一个类叫做 BeautifulSoup (注意B和S都要大写)

下面就是把这个demo页面变成这个BeautifulSoup能够理解的汤

我们有个变量叫 soup = BeautifulSoup(demo , “html.parser”)

我们除了给出demo,还要给出一个解释demo的解释器,这里面我们解释器选择的是html.parser

也就是说我们对demo进行html的解析

下面我们用print来检查我们的解析是否正确,也就是检查我们的库安装是否正确

print(soup.prettify())

这个相关内容输出了说明我们beautifulsoup库成功的解析了相关页面



简单来说,使用beautifulsoup库只需要两个代码

第一行这里面的 BeautifulSoup 是一个类,B 和 S 要大写

然后我们要做一锅汤,可以定义一个变量soup(也可以是其他变量名)

BeautifulSoup这个类型有两个参数

第一个参数是我们需要BeautifulSoup解析的一个html格式的信息,我们可以用'<p>data</p>来做个代替,同时我们也能用任何的变量如demo

同时我们也给出了解析这锅汤所使用的解析器,这里使用的html.parser

只用两个代码我们就能够看到的html和sml信息


Beautifulsoup库的基本元素


打开任何html文件的源代码可以看到它是由一系列尖括号构成的标签组织起来的

这里面每一个尖括号形成了一个标签,而标签之间每一对标签形成了一个上下游关系,形成了一个标签树

只要提交的文件是标签类型,那么Beautifulsoup库都能对它做很好的解析


接下来我们看一下每一个标签的具体格式

这里面我们以p标签为例

p标签是以一对尖括号形成的标签类型,它的名字是p




这三着是等价的


我们也可以通过打开文件的方式为BeautifulSoup类提供html或sml的文档内容


下面介绍获得tag标签的主要方法


下面介绍获得标签名字的方法


我们可以通过对任何一个标签使用.name的方式获得它的名字,这个名字显示出来是字符串类型


标签属性是在标签中表明标签相关特点的相关区域,它以字典形式来组织

假设这个时候汤已经做好了,我们选择a标签来做测试

我们用 .attrs 来获得标签属性,可以看到打印出了一个字典,字典中给出了这个标签属性中它的标签名字,属性名字和属性的值之间的对应关系

比如说,这里面我们要获取class属性的值,我们可以这样来实现

tag.attrs['class']

我们看到class属性的值是一个列表列表类型中的第一个元素是‘py1’

我们也可以获得a标签的链接属性 tag.attrs['href'],这个时候a标签打印出了一个链接

接下来我们看一下标签属性的类型,我们看到标签属性是个字典类型

标签是个标签类型

在bs4库中为标签定义了一种bs4

库认可的类型

tag的标签可以有0个或多个属性,如果没有属性存在的时候,我们使用attrs获得的字典是一个空字典,但是无论有无属性,我们总能获得一个字典



下面看tag标签的string元素,这个元素是一个字符串类型,它表示的是尖括号标签之间的那部分字符串

假设我们有一锅汤叫soup

soup.a 这是标签的信息,

a标签的string我们用soup.a.string来实现,我们可以看到这个tag标签中表达的信息是‘basic python’

通过p标签的字符串信息

再看一下NavigableString也是一个bs4库定义的类型

还有一个注意点,针对<p>标签的实例,我们可以看到<p>标签中实际还包含了一个<b>标签,但是当我们输出soup.p.string的时候,我们打印的string并不包含<b>标签,这说明NavigableString是可以跨越多个标签层次的


下面我们看一下tag的另一种类型叫comment类型,comment是注释的意思,表示的是如果是html页面中出现有注释的部分该怎么处理

我们重做一锅汤,我们看到在 <b> 标签中有一个注释

在html的表达中,我们用 <! 来表示一个注释的开始,那么 <p> 标签中呢给出的信息就不是一个注释

接下来看一下b标签的string,b标签打印出了注释内容

我们看下它的类型,他是一个bs4.element.comment类型

我们再来看一下p标签的类型,  我们发现p标签是一个字符串,同时它的类型是 NavigableString 类型

我们对p标签和b标签分别使用 .string 的时候,我们都能产生一段文本,但是当这个文本是注释形式的时候,它并没有标明它是注释,也就是说它的 <! 被去掉了,所以在有的时候分析文档的时候,我们需要对其中的注释部分做相关的判断,而判断的依据就是它的类型,这种情况在我们分析文本中并不常用,所以稍做了解就行



具体使用方法:

我们可以用 .tag 方式获得标签信息,比如说我们soup.a获得a标签     soup.p获得p标签

.name的方式获得标签的名字,比如说p.name

.attrs获得标签的属性

这里面,无论是否一个标签存在属性,它都会返回一个字典类型

对于标签之间的字符串,我们可以用 .string 的方式获取

获取过程中,如果其中存在注释,那么它会返回一种特殊的注释类型

如果我们不希望提取注释信息,需要对这种类型做相关的判断

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,776评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,527评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,361评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,430评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,511评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,544评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,561评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,315评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,763评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,070评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,235评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,911评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,554评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,173评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,424评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,106评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,103评论 2 352

推荐阅读更多精彩内容