1. 什么是BeautifulSoup
Beautiful Soup(简称BS4)提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它
是一个工具箱,通过解析文档为tiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。
不需要考虑编码方式,除非文档没有指定,重新原始编码方式即可。
2. BS4的4种对象
2.1 BeautifulSoup对象
获取标签属性
2.2 Tag对象
Tag就是html中的一个标签,用BeautifulSoup就能解析出来Tag的具体内容,
具体的格式为soup.name,其中name是html下的标签。
2.3 NavigableString对象
用于获取标签内容
2.4 注释对象
特殊的NavigableString对象
3. 解析器
3.1 什么是解析器:
将文档解析为目标格式的文档
3.2 常见解析器:
3.2.1 Python标准库
BeautifulSoup(markup, "html.parser")
Python的内置标准库
执行速度适中
文档容错能力强
Python 2.7.3 or 3.2.2)前 的版本中文档容错能力差
3.2.2 lxml
HTML 解析器 BeautifulSoup(markup, "lxml")
速度快
文档容错能力强
需要安装C语言库
3.2.3 lxml
XML 解析器
BeautifulSoup(markup, ["lxml-xml"])
BeautifulSoup(markup, "xml")
速度快
唯一支持XML的解析器
需要安装C语言库
3.2.4 html5lib
BeautifulSoup(markup, "html5lib")
最好的容错性
以浏览器的方式解析文档
生成HTML5格式的文档
速度慢
不依赖外部扩展
4. BS4的使用方法
4.1 导入第三方模块:
import re
from bs4 import BeautifulSoup
4.2 将html代码解析成BS4可以识别的格式:
soup = BeautifulSoup(html, 'html.parser')
4.3 根据标签获取内容:
soup.title 获取title标签内容
soup.title.name 获取title标签名称
soup.a.attrs 获取a标签里面的所有属性
soup.a.attrs['href'] 获取a标签中的href属性的值
soup.a.get['href'] 获取a标签中的href属性的值(常用)
soup.a.string 获取标签里面的内容(只有在此标签下没有子标签,或者只有一个子标
签的情况下才能返回其中的内容,否则返回的是None)
soup.a.get_text() 获取标签里面的内容(可以获得一个标签中的所有文本内容,包括子孙
节点的内容,这是最常用的方法)
soup.a.get('href')='' 对标签的属性进行修改
soup.find_all('a') 找出所有符合条件的标签
soup.find_all('a', class_="sister") 获取所有的a标签, 并且类名为"sister"
soup.find_all(text=re.compile('story\d+')) 根据内容进行查找
soup.select("title") 标签选择器
soup.select(".sister") 类选择器(.类名)
soup.select("#link1") id选择器(#id名称)
soup.select("input[type='password']") 属性选择器()