欢迎关注”生信修炼手册”!
BeautifulSoup模块用于解析html和xml文档中的内容,相比正则表达式,其更好的利用了html这种结构性文档的树状结构,解析起来更加方便。
解析的第一步,是构建一个BeautifulSoup对象,基本用法如下
>>> from bs4 import BeautifulSoup
>>> soup = BeautifulSoup(html_doc, 'html.parser')
第二个参数表示解析器,BeautifulSoup支持以下多种解释器,图示如下
在实际操作中,推荐使用lxm解析器,速度快而且稳定。解析完成后,就得到了一个文档树,我们可以通过这个文档树来快速的查找位点, 其核心就是操作文档树的子节点, 也称之为tag。
1. 访问标签
通过点号操作符,可以直接访问文档中的特定标签,示例如下
>>> soup = BeautifulSoup(html_doc, 'lxml')
>>> soup.head
<head><title>The Dormouse's story</title></head>
>>> soup.head.title
<title>The Dormouse's story</title>
>>> soup.a
<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>
这样的方式每次只会返回文档中的第一个标签,对于多个标签,则通过find_all方法返回多个标签构成的列表,示例如下
>>> soup.find_all('a')
[<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>, <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>, <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>]
>>> soup.find_all('a')[0]
<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>
还可以在find方法中添加