BeautifuSoup实用方法属性总结
一、对象
Beautifulsoup中有4个重要的对象:
- Tag,标签,可以获取标签文本,属性
- BeautifulSoup,继承自Tag,所以Tag的方法它基本都能用
- NavigableString,文本字符串
- Comment,注释
二、创建BeautifulSoup对象
2.1 通过字符串创建
from bs4 import BeautifulSouphtml = """
<html><head><title>The Dormouse"s story</title></head>
<body>
<p class="story">Once upon a time there were three little sisters; and their names were
</p>
"""
soup = BeautifulSoup(html, "html.parser")
print(soup.prettify())
2.2 通过文件创建
from bs4 import BeautifulSoupwith open(r"F: mpetree.html") as fp:
soup = BeautifulSoup(fp,"lxml")
print(soup.prettify())
三、Tag关系属性
关系 说明
parent
父节点
parents
祖先节点
next_sibling
后一个兄弟节点
next_element
后一个节点
previous_sibling
前一个兄弟节点
previous_element
前一个节点
next_element与next_sibling的区别是:
- next_sibling找的是兄弟元素
- next_element可能是子元素
四、Tag查找方法套装
4.1 方法
方法 说明
find
查找满足条件的第一个节点
find_all
查找满足条件的所有节点
find_parent
查找父节点
find_parents
在祖先节点中查找
find_next_siblings
查找后面的兄弟节点
find_next_sibling
查找后面满足条件的第一个兄弟节点
find_all_next
查找后面所有节点
find_next
查找后面第一个满足条件的节点
find_all_previous
查找前面所有满足条件的节点
find_previous
查找前面第一个满足条件的节点
上面的查找方法都可以通过标签、属性、文本字符串的方式来查找,并且都支持正则表达式和函数方式
4.2 示例
# 查找所有p节点soup.find_all("p")
# 查找title节点,不递归
soup.find_all("title", recursive=False)
# 查找p节点和span节点
soup.find_all(["p", "span"])
# 查找第一个a节点,和下面一个find等价
soup.find_all("a", limit=1)
soup.find("a")
# 查找id为id1的节点
soup.find_all(id="id1")
# 查找name属性为tim的节点
soup.find_all(name="tim")
soup.find_all(attrs={"name": "tim"})
#查找class为clazz的p节点
soup.find_all("p", "clazz")
soup.find_all("p", class_="clazz")
soup.find_all("p", class_="body strikeout")
# 查找与p开头的节点
soup.find_all(class_=re.compile("^p"))
# 查找有class属性并且没有id属性的节点
soup.find_all(hasClassNoId)
def hasClassNoId(tag):
return tag.has_attr("class") and not tag.has_attr("id")
soup.find_all(string="tim")
soup.find_all(string=["alice", "tim", "allen"])
soup.find_all(string=re.compile("tim"))
def onlyTextTag(s):
return (s == s.parent.string)
# 查找只有文本节点的节点
soup.find_all(string=onlyTextTag)
# 查找文本节点为tim的a节点
soup.find_all("a", string="tim")
五、select
select有2个方法:
- select,选择所以满足条件的元素
- select_one,选择第一个满足条件的元素
select玩的就算选择器,只要CSS选择器没有问题,select就没有问题,如果对于CSS选择器不熟悉,可以参考CSS精选
以上是 BeautifuSoup实用方法属性总结 的全部内容, 来源链接: utcz.com/z/511206.html