Tag
Tag是BeautifulSoup解析HTML内容最重要的部分,对HTML树形结构解析的最终归宿都是一个节点,即一个标签(Tag).
Tag有很多方法和属性, 但最主要的是三个部分,1)名字name, 2) 属性 attrs, 3) 内容string。
1) name
每一个Tag都有自己的name,使用.name 可以获取name.
from bs4 import BeautifulSoup
html = '''
<html><head><title>Hello world</title></head>
'''
soup = BeautifulSoup(html,'html.parser')
print(soup.title.name) #选择title节点,获取name
2) attrs
from bs4 import BeautifulSoup
html = '''
<ul>
<li class="item-0" name="one"><a href="www.baidu.com">baidu</a>
'''
soup = BeautifulSoup(html,'html.parser')
print(soup.li.attrs)#获取所有属性,返回字典
print(soup.li.attrs['class'])#获取li节点的class属性值
print(soup.li['class'])#获取li节点的class属性值,更加简洁的写法,推荐写法
print(soup.li.get('class'))#获取li节点的class属性值
print(soup.li['name'])#获取li节点的name属性值,推荐写法
我们可以使用.attr 获取到Tag对象的所有属性值,返回的是字典格式,所有可以使用[‘key’] 来获取指定的属性值。简单一点我们也可以省略attrs,直接使用tag[‘key’] 来获取。
3) string
可以使用string属性获取节点包含的文本内容。
from bs4 import BeautifulSoup
html = '''
<ul>
<li class="item-0" name="one"><a href="www.baidu.com">baidu</a>
<li class="item-1" name="two"><a href="www.alibaba.com">alibaba</a>
'''
soup = BeautifulSoup(html,'html.parser')
print(soup.a.string) #baidu & alibaba
BS4最主要的工作在于帮助我们快速方便准确的找到目标节点,主要有以下几种方式。