本文共 1967 字,大约阅读时间需要 6 分钟。
简介:
Beautiful Soup 库是解析、遍历、维护“标签树”的功能库 BeautifulSoup最主要的功能是从网页抓取数据,Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。安装:
使用cmd命令行,输入命令:pip install beautifulsoup4库的基本使用
from bs4 import BeautifulSoupsoup=BeautifulSoup('data
','html.parser')soup=BeautifulSoup(open('D:abc.html'),'html.parser')
第一个参数html代码,第二个参数解析HTML的解析器
BeautifulSoup支持Python标准库中的HTML解析器,还支持一些第三方的解析器,如果我们不安装它,则 Python 会使用 Python默认的解析器对Beautiful Soup库的检测
import requestsfrom bs4 import BeautifulSoupr = requests.get('http://python123.io/ws/demo.html')demo = r.textsoup = BeautifulSoup(demo, 'html.parser')print(soup.prettify()) # 将获取的代码以html结构进行输出
Beautiful Soup库解析器
# 获取HTML的titleimport requestsfrom bs4 import BeautifulSoupr = requests.get('http://python123.io/ws/demo.html')demo = r.textsoup = BeautifulSoup(demo, 'html.parser')print(soup.title)# 获取HTML中的某个标签,如果存在多个相同的标签只会返回第一个标签tag = soup.aprint(tag)# 获取HTML的a标签的标签名print(soup.a.name)# 获取a标签父标签的标签名print(soup.a.parent.name)# 获取a标签父标签的父标签的标签名print(soup.a.parent.parent.name)# 获取标签的所有属性(标签的属性会以字典的形式输出)print(soup.a.attrs)# 获取标签某个属性的具体值print(soup.a.attrs['href'])# 获取标签中的具体信息print(soup.a.string)
标签树的下行遍历:
# 获取某个标签的儿子标签,返回值是包含所有儿子标签的列表head = soup.headprint(head)print(head.contents)# 遍历儿子节点(注换行符也算一个标签)for child in soup.body.children: print(child)
标签树的上行遍历
for parent in soup.a.parents: if parent is None: print(parent) else: print(parent.name)
标签树的平行遍历
例:
# 对a标签进行后续遍历for sibling in soup.a.next_siblings: print(sibling)# 对a标签进行前续遍历for sibling in soup.a.previous_siblings: print(sibling)
find_all()
# 查找a标签a=soup.find_all('a')print(a)# 查找多个标签a=soup.find_all(['a','p'])print(a)# 查找HTML中有那些标签for tag in soup.find_all(True): print(tag.name)# 查找含有course属性值的p标签print(soup.find_all('p',{ 'course'}))# 查找id为link1的标签print(soup.find_all(id='link1'))
扩展方法
转载地址:http://csgh.baihongyu.com/