BeautifulSoup
创建一个 beautiful节点
from bs4 import BeautifulSoup #导入库 # 根据HTML网页字符串创建BeautifulSoup对象 soup = BeautifulSoup( html_doc, # HTML文档字符串 'html.parser', # HTML解析器 from_encoding='utf8' # HTML文档的编码 )
查找网页标签
# 方法:find_all(name, attrs, string) #name就是标签的名称 例如<p> <div> <tr>等 #attrs 就是搜索标签的属性href #sitring就是标签内的字符串
# 查找所有标签为a的节点
soup.find_all('a')
# 查找所有标签为a,链接符合/view/123.html形式的内容
soup.find_all('a', href='/view/123.html')
#.attrs 就是获取所有标签的属性值。
# 查找所有标签为div,class为abc,文字为Python的内容
soup.find_all('div', class_='abc', string='Python')访问标签内的属性
#得到节点:<a href='1.html'>Python</a> #获取查找到的节点的标签名称 a.name #获取查找到的 a 节点的 href 属性,获取a标签的url,也可以获取别的标签的。 a['href'] #获取查找到的 a 节点的链接文字,也可以获取别的标签的。 a.get_text()
属性选择器
from bs4 import BeautifulSoup
# css选择器
html_doc = """<html><head><title>"属性选择器"</title></head>
<body><p class="title"><b>www.youbafu.com</b></p><p class="website">一个学习编程的网站</p>
<a href="http://www.youbafu.com/python/" id="link1">python教程</a>
<a href="http://www.youbafu.com/c/" id="link2">c语言教程</a>
<a href="http://www.youbafu.com/django/" id="link3">django教程</a>
<p class="vip">加入我们阅读所有教程</p>
<a href="http://www.youbafu.com/vip" id="link4">成为vip</a>
<p class="introduce">介绍:<a href="http://www.youbafu.com/about.html" id="link5">关于网站</a>
<a href="http://www.youbafu.com/about0.html" id="link6">关于站长</a></p>"""
soup = BeautifulSoup(html_doc, 'html.parser')
# 根据元素标签查找
print("我是根据元素标签查找:",soup.select('title'))
# 根据属性选择器查找
print("我是根据属性选择器查找:",soup.select('a[href]'))
# 根据类查找
print("我是根据class的类进行查找:",soup.select('.vip'))
# 后代节点查找、首先查找html、在找到head、在找到title
print("我是后代节点查找:",soup.select('html head title'))
# 查找兄弟节点
print("我是兄弟节点:",soup.select('p + a'))
# 查找子节点
print(soup.select('p > a'))
print(soup.select('.introduce > #link5'))