BeautifulSoup 学习笔记(不断更新)

本文从WordPress迁移而来, 查看全部WordPress迁移文章

学习内容来自文档,主要将其内容翻译一下和做个简单的笔记

BeautifulSoup文档

  • 构造bs对象
1
bs = bs4.BeautifulSoup(html) #传入一段html文本即可
  • tag对象,可以直接通过bs对象.标签名得到
1
2
head = bs.html.head #通过树形结构,索引到html标签下面的head标签及其包含的内容
a = bs.html.head.a #同理,不过如果head下面有多个a,这样的索引会返回第一个a
  • tag对象,标签名
1
2
3
4
# <meta></meta>
name = tag.name #标签的名字,str对象
#'meta'
tag.name = 'table' #直接更改这个标签!
  • tag对象,操作属性
1
2
3
4
print tag['class'] #[]得到class属性的值,unicode对象
tag['class'] = 'xxx' #直接修改属性的值
tag.attrs #返回一个字典,所有的{属性:值}
tag['xyz'] = 'abc' #如果没有xyz这个属性,将新增这个属性
  • tag对象,返回string
1
2
3
# <a>this is a string</a>
s = a.string #s是一个unicode对象,编码一下就成了str,串的内容就是'this is a string'
# u'this is a string'
  • tag对象,返回strings
1
2
3
4
5
6
strings = head.strings
for s in strings:
print(repr(s))
#打印出head里面的所有string,每个都是unicode对象,需要编码成str
#测试发现,strings的对象类型为<type 'generator'>
#另发,这个for第一次能输出,之后就没有内容了
  • tag对象,contents
1
2
3
4
5
6
7
8
9
tagList = html.contents 
#将html里面的所有tag找出来,一个一个存入list中
#tagList的项数是2,就是head和body,无论head,body里面有多少标签(按级别来划分)
#<html>
#<head>
#</head>
#<body>
#</body>
#</html>
  • tag对象,输出
1
tag.prettify() #以非常标准的格式输出,返回的是unicode对象