bs4-BeautifulSoup

1.BeautifulSoup下载

pip install BeautifulSoup4 或者 pip install bs4
pip install lxml      #解析器

2.BeautifulSoup支持的解析器

解析器 使用方法 优势 劣势
python标准解析库 BeautifulSoup(markup, "html.parser")
  • Python的内置标准库
  • 执行速度适中
  • 文档容错能力强
  • Python 2.7.3 or 3.2.2)前 的版本中文档容错能力差
lxml HTML 解析器 BeautifulSoup(markup, "lxml")
  • 速度快
  • 文档容错能力强
  • 需要安装C语言库
lxml XML 解析器

BeautifulSoup(markup, ["lxml-xml"])

BeautifulSoup(markup, "xml")

  • 速度快
  • 唯一支持XML的解析器
  • 需要安装C语言库
html5lib BeautifulSoup(markup, "html5lib")
  • 最好的容错性
  • 以浏览器的方式解析文档
  • 生成HTML5格式的文档
  • 速度慢
  • 不依赖外部扩展

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3.BeautifulSoup常用方法

 1 soup = BeautifulSoup(目标字符串,'解析器')
 2 #根据标签名查找
 3 soup.a  #只能查找得到第一个符合要求的节点,是一个对象,bs4自己封装类的对象
 4 #获取属性
 5 soup.a.attrs   #获取得到所有属性和值,是一个字典
 6 soup.a.attrs['href']  #获取指定的属性值
 7 soup.a['href'] #简写形式
 8 #获取文本(如果标签里面还有标签,那么string为空)
 9 soup.a.string
10 soup.a.text
11 soup.a.get_text()
12 
13 #DOM树操作
14 #子节点
15 #.content返回列表 .children返回生成器
16 #所有子孙节点
17 #.descendants生成器
18 #父节点
19 #.parent
20 #全部父节点
21 #.parents生成器
22 #兄弟节点
23 #.next_silbling .previous_silbling
24 #兄弟节点可以理解为和本节点在统一级的节点
25 #全部兄弟节点
26 #.next_silblings .previous_silblings生成器
27 #前后节点
28 #.next_element .previous_element
29 #与兄弟界节点不同,并不针对与兄弟节点,而是再有节点,部分层次
30 
31 #find_all方法
32 #返回的是一个列表,列表里面都是节点对象
33 soup.find_all('a')#找到所有a
34 soup.find_all('a', limit=2)# 提取符合要求的前两个a
35 soup.find_all(['a', 'li'])# 查找得到所有的a和li
36 soup.find_all('a', class_='xxx')#查找得到所有class是xxx的a
37 soup.find_all('li', class_=re.compile(r'^xiao'))#查找所有的class以xiao开头的li标签

官方帮助文档:https://beautifulsoup.readthedocs.io/zh_CN/v4.4.0/

上一篇:如何保留“和使用bs4 python解析xml时


下一篇:爬虫三 bs4&xpath&jsonpath