BeautifulSoup的简易使用

Demo

#!/usr/bin/python3

#测试文档解析

from bs4 import BeautifulSoup

file = open("./baidu.html","rb")
html=file.read().decode("utf-8")
bs = BeautifulSoup(html,"html.parser")

#1. Tag 标签及其属性 寻找第一个匹配的标签
#print(bs.title) # <title>百度一下,你就知道 </title>
#print(bs.a)
#print(bs.head)
#print(type(bs.head)) #类型是 bs4.element.Tag

#2. NavigableString 标签里面的内容
#print(bs.title.string)# 百度一下,你就知道
#print(type(bs.title.string))
#print(bs.a.attrs)# 拿到标签中的一些属性值 {'class': ['mnav'], 'href': 'http://news.baidu.com', 'name': 'tj_trnews'}

#3. BeautifulSoup 表示整个文档
#print(type(bs))
# print(bs.name)
# print(bs.attrs)
# print(bs)

#4. Comment 输出的内容不含字符串
# print(bs.a.string)
# print(type(bs.a.string))


# 文档的遍历
#print(bs.head.contents)
#print(bs.head.contents[1])

# 文档的搜索
#(1) find_all 查找所有
#字符串过滤 查找与字符串完全匹配的内容
# t_list=bs.find_all("a")

#正则表达式的搜索 :使用search
# import re
# t_list=bs.find_all(re.compile("a"))

# 根据函数的方法进行搜索(了解)
# 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)

#print(t_list)

# kwargs 参数

# t_list=bs.find_all(id="head")#找到id=head 标签及其所有内容
# for item in t_list:
# print(item)

# text参数
#t_list=bs.find_all(text="hao123")
# t_list=bs.find_all(text=["hao123","地图","贴吧"])

# 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("a[class='bri']")#通过属性查询
#t_list=bs.select("head>title")#通过子标签查找

t_list=bs.select(".mnav ~ .bri")
print(t_list[0].get_text())
# for item in t_list:
# print(item)

测试:daidu.html

<!DOCTYPE html>
<html>
<head>
<meta content="text/html;charset=utf-8" http-equiv="content-type" />
<meta content="IE=Edge" http-equiv="X-UA-Compatible" />
<meta content="always" name="referrer" />
<link href="https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/bdorz/baidu.min.css" rel="stylesheet" type="text/css" />
<title>百度一下,你就知道 </title>
</head>
<body link="#0000cc">
<div id="wrapper">
<div id="head">
<div class="head_wrapper">
<div id="u1">
<a class="mnav" href="http://news.baidu.com" name="tj_trnews"><!--新闻x--></a>
<a class="mnav" href="http://news.baidu.com" name="tj_trnews">新闻</a>
<a class="mnav" href="https://www.hao123.com" name="tj_trhao123">hao123</a>
<a class="mnav" href="http://map.baidu.com" name="tj_trmap">地图</a>
<a class="mnav" href="http://v.baidu.com" name="tj_trvideo">视频</a>
<a class="mnav" href="http://tieba.baidu.com" name="tj_trtieba">贴吧</a>
<a class="bri" href="//www.baidu.com/more/" name="tj_briicon" style="display: block;">更多产品 </a>
</div>
</div>
</div>
</div>
</body>
</html>

学习资料

Up:IT私塾
网址:https://space.bilibili.com/507961306/