欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

bs4-BeautifulSoup

程序员文章站 2022-10-25 22:39:10
1.BeautifulSoup下载 2.BeautifulSoup支持的解析器 Python的内置标准库 执行速度适中 文档容错能力强 Python 2.7.3 or 3.2.2)前 的版本中文档容错能力差 速度快 文档容错能力强 需要安装C语言库 BeautifulSoup(markup, ["l ......

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/