- div>打开APP阅读更多精彩内容
Beautiful Soup是一个可以从HTML或XML文件中提取数据的Python库,简单来说,它能将HTML的标签文件解析成树形结构,然后方便地获取到指定标签的对应属性。
通过Beautiful Soup库,我们可以将指定的class或id值作为参数,来直接获取到对应标签的相关数据,这样的处理方式简洁明了。
当前最新的 Beautiful Soup 版本为4.4.0,Beautiful Soup 3 当前已停止维护。
Beautiful Soup 4 可用于 Python2.7 和 Python3.0,本文示例使用的Python版本为2.7。
博主使用的是Mac系统,直接通过命令安装库:
sudo easy_install beautifulsoup4
安装完成后,尝试包含库运行:
from bs4 import BeautifulSoup
若没有报错,则说明库已正常安装完成。
开始
本文会通过这个网页http://reeoo.com来进行示例讲解,如下图所示
BeautifulSoup 对象初始化
将一段文档传入 BeautifulSoup 的构造方法,就能得到一个文档对象。如下代码所示,文档通过请求url获取:
#coding:utf-8from bs4 import BeautifulSoupimport urllib2url = 'http://reeoo.com'request = urllib2.Request(url)response = urllib2.urlopen(request, timeout=20)content = response.read()soup = BeautifulSoup(content, 'html.parser')
request 请求没有做异常处理,这里暂时先忽略。BeautifulSoup 构造方法的第二个参数为文档解析器,若不传入该参数,BeautifulSoup会自行选择最合适的解析器来解析文档,不过会有警告提示。
也可以通过文件句柄来初始化,可先将HTML的源码保存到本地同级目录 reo.html,然后将文件名作为参数:
soup = BeautifulSoup(open('reo.html'))
可以打印 soup,输出内容和HTML文本无二致,此时它为一个复杂的树形结构,每个节点都是Python对象。
Ps. 接下来示例代码中所用到的 soup 都为该soup。
Tag
Tag对象与HTML原生文档中的标签相同,可以直接通过对应名字获取
tag = soup.titleprint tag
打印结果:
Name
通过Tag对象的name属性,可以获取到标签的名称
print tag.name# title
Attributes
一个tag可能包含很多属性,如id、class等,操作tag属性的方式与字典相同。
例如网页中包含缩略图区域的标签 article
...
全部0条评论
快来发表一下你的评论吧 !