file = open('baidu.html', 'rb')
html = file.read()
bs = BeautifulSoup(html, 'html.parser')
print(bs.title)
print(bs.a)
print(bs.head)
1、获得标签内的字符串
print(bs.title.string)
2、获得标签内的属性
print(bs.a.attrs)
3、获得整个文档,bs
print(bs)
4、获得注释
print(bs.a.string)
------------------------------------------
更多内容可搜索BeautifulSoup文档
文档的遍历
print(bs.head.contents)#返回一个列表,以标签为单位作为列表元素
print(bs.head.contents[1]) 返回指定内容
文档的搜索、定位
1、字符串过滤:会查找与字符串完全匹配的内容
t_list = bs.find_all('a') 查询所有的‘a’标签,'abc'等标签不会查到
print(t_list)
2、正则表达式搜索:使用search方法匹配内容
t_list = bs.find_all(re.compile('a')) #查询所有符合表达式'a'规则的内容
3、方法:传入一个函数(方法),根据函数的要求来搜索(了解即可)
def name_is_exists(tag):
return tag.has_attr('name')
#
#
t_list = bs.find_all(name_is_exists)
for item in t_list:
print(item)
2.kwargs 参数
t_list = bs.find_all(id='head')#id为head的所有内容
t_list = bs.find_all(class_=True) 有class这一项的所有内容
t_list = bs.find_all(href='https://www.hao123.com/')
t_list = bs.find_all(text='hao123')
t_list = bs.find_all(text=['hao123','地图','贴吧'])
t_list = bs.find_all(text=re.compile(r'hao\d{3}'))
4.limit 参数
t_list = bs.find_all('a', limit=3) 限定3个
for item in t_list:
print(item)
css选择器
t_list = bs.select('title') #通过标签查找
t_list = bs.select('.mnav') #通过类名查找
t_list = bs.select('#u1') #通过id查找
t_list = bs.select('a[class="br1"]') #通过属性查找
t_list = bs.select('head > title') #通过子标签查找
for item in t_list:
print(item)
t_list = bs.select('.mnav ~ .bri') #通过兄弟节点查找,与mnav是兄弟节点的bri标签
print(t_list[0].get_text()) #打印该bri标签的文本