BeautifuSoup实用方法属性总结

编程

一、对象

Beautifulsoup中有4个重要的对象:

  1. Tag,标签,可以获取标签文本,属性
  2. BeautifulSoup,继承自Tag,所以Tag的方法它基本都能用
  3. NavigableString,文本字符串
  4. Comment,注释

二、创建BeautifulSoup对象

2.1 通过字符串创建

from bs4 import BeautifulSoup

html = """

<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 BeautifulSoup

with 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的区别是:

  1. next_sibling找的是兄弟元素
  2. 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个方法:

  1. select,选择所以满足条件的元素
  2. select_one,选择第一个满足条件的元素

select玩的就算选择器,只要CSS选择器没有问题,select就没有问题,如果对于CSS选择器不熟悉,可以参考CSS精选

以上是 BeautifuSoup实用方法属性总结 的全部内容, 来源链接: utcz.com/z/511206.html

回到顶部