find() 和 findAll()
BeautifulSoup 里的 find() 和 findAll() 可能是你最常用的两个函数。借助它们,你可以通过标签的不同属性轻松地过滤 HTML 页面。
from urllib.request import urlopen
from bs4 import BeautifulSoup
html=urlopen("http://www.pythonscraping.com/pages/warandpeace.html")
bsObj=BeautifulSoup(html)
nameList=bsObj.findAll("span",{"class":'green'})
for name in nameList:
print(name.get_text())
函数定义:
findAll(tag, attributes, recursive, text, limit, keywords)
find(tag, attributes, recursive, text, keywords)
BeautifulSoup的四种常用对象:
• BeautifulSoup 对象
前面代码示例中的 bsObj
• 标签 Tag 对象
BeautifulSoup 对象通过 find 和 findAll ,或者直接调用子标签获取的一列对象或单个对象,就像:
bsObj.div.h1
但是,这个库还有另外两种对象,虽然不常用,却应该了解一下。
• NavigableString 对象
用来表示标签里的文字,不是标签(有些函数可以操作和生成 NavigableString 对象,而不是标签对象)。
• Comment 对象
用来查找 HTML 文档的注释标签,
导航树
findAll 函数通过标签的名称和属性来查找标签 。但是如果你需要通过标签在文档中的位置来查找标签,该怎么办?这就是导航树(Navigating Trees)的作用。