python的文本处理功能是毋庸置疑的,一般的文字的处理我们使用的RE,在处理HTML的时候,我们不得不说的就是,现在我们就从头开始学习一遍~~~
1 下载安装由于beautifulsoup4是使用PYPI,因此该package的安装同我们的安装包不同,直接加压到python的lib下还是不够,需要进行
install
命令如下:
python setup.py install
如果遇到其他错误,请参考2 quick-start
该命令的意思是: 将html进行格式化输出,是不是很简单?
这里需要说明的是,soup是一个doucument对象,对应一个python 的BEAUTIFULSOUP 对象
这是我们需要介绍的第一个对象
点击(此处)折叠或打开
-
print(soup.title)
-
print(soup.title.name)
-
print(soup.title.string)
作业输出如下:
The Dormouse's story
title
The Dormouse's story
你可以通过标签来访问相应的元素,
其中,soup.title 为TAG对象,该对象具有很多属性
这是我们需要介绍的第二个对象实例
这里的TAG和HTML里面的TAG是一一对应的。
-
print(soup.title.parent)
-
print(soup.title.parent.name)
-
print(soup.title.parent.string)
结果输出:
The Dormouse's story
head
The Dormouse's story
是不是有点意思了?,该标签的父标签,父标签也是标签,同样具有某些属性
-
print(soup.p)
-
print(soup.p['class'])
-
print(soup.a)
-
print(soup.find_all('a'))
-
print(soup.find(ID='link3'))
The Dormouse's story
['title']
Elsie
[Elsie, Lacie, Tillie]
Tillie
-
print(soup.p)
返回第一个P标签
-
print(soup.p['class'])
返回P标签中的属性值,属性于属性值是以dictionary形式存在
-
print(soup.find_all('a'))
返回文档中所有的A标签
1. print(soup.find(ID='link3'))
返回第一个ID=link3的标签
Tillie
print(type(soup.find(id='link3')))
同样访问一个TAG的属性时,同样可以使用dictionary的方式:
print(soup.a['id'])===》 link1
这里唯一需要注意的是,就是标签的值,标签所包含的值,
-
print(soup.title)
-
print(soup.title.name)
-
print(soup.title.string)
-
print(type(soup.title))
print(type(soup.title.name))
print(type(soup.title.string))
The Dormouse's story
title
The Dormouse's story
发现问题没有,标签值竟然是bs4.element.NavigableString,不是我们通常所说的string,因此不能直接进行操作,不过不必大惊效果,NavigableString就是一个文本,只不过被BeautifulSoup包装了一把而已,它的功能比常见的STring的功能更加强大,这个在后边你会看到,它支持 and 这里如果你打算进行string操作的话,需要进行一个转换,方法也很简单
-
print(str(soup.title.string))
-
print(type(str(soup.title.string)))
The Dormouse's story
官方文档给出的转换函数式unicode,但是貌似python 3 已经不支持,待求证呵呵
最后介绍一个大招,就是获取整个文档的文本内容
-
print(soup.get_text())
-
print(type(soup.get_text()))
The Dormouse's story
Once upon a time there were three little sisters; and their names were
Elsie,
Lacie and
Tillie;
and they lived at the bottom of a well.
...
最后,总结一下介绍内容主要:
----document对象
标签
----------属性
---string对象
后面我们将学习一下NavigableString
REF:
阅读(4656) | 评论(0) | 转发(0) |