Tag对象
- name:标签名字
- attrs:标签属性
- has_attr:判断Tag是否包含属性
- contents:获取Tag的所有子节点,返回一个list
- children:获取Tag的所有子节点,返回一个生成器
- string:如果tag只有一个 NavigableString 类型子节点
- strings:如果tag中包含多个字符串
- get_text():
- 如果只想得到tag中包含的文本内容,那么可以嗲用 get_text() 方法
- 可以通过参数指定tag的文本内容的分隔符
find_all
find_all(name, attrs, recursive, text, **kwargs)
- name
- 字符串过滤:会查找与字符串完全匹配的内容
- 正则表达式过滤:如果传入的是正则表达式,那么BeautifulSoup4会通过search()来匹配内容
- 列表:如果传入一个列表,BeautifulSoup4将会与列表中的任一元素匹配到的节点返回
- 方法:传入一个方法,根据方法来匹配(参数为tag)
def myfun(tag):
if tag.has_attr('class'):
return tag.attrs['class'][0] == 'atag'
return False
# 文本
bs.find_all('button')
#正则表达式
bs.find_all(re.compile("^b"))
#列表
bs.find_all(['input','button'])
#函数
bs.find_all(myfun)
- attrs参数
bs.find_all(attrs={"class":"value"})
- text参数
- 与name方法相似
# 文本
bs.find_all(text='button')
#正则表达式
bs.find_all(text=re.compile("\d"))
#列表
bs.find_all(text=["hao123", "地图", "贴吧"])
#函数
def length_is_two(text):
return text and len(text) == 2
t_list = bs.find_all(text=length_is_two)
for item in t_list:
print(item)
CSS选择器
bs.select(‘css选择器’)