beautifhulsoup4的使用

Beautiful: - 基本使用 from bs4 import BeautifulSoup

    - 解析器:
      lxml, html.parser

  soup = BeautifulSoup(解析的文档, '解析器')

  - 美化功能
  soup.prettify

- 遍历文档树 ****
  1.直接搜索
      soup.head

  2.获取标签的名称
      soup.a.name

  3.获取标签的属性
      soup.a.attrs['href']

  4.获取标签的内容
      soup.p.text

  5.嵌套查找
      soup.p.b

  6.子节点,子孙节点
      soup.p.children
      soup.p.descendants

  7.父节点、祖先节点
      soup.a.parent
      soup.a.parents

  8.兄弟节点
      # 查找下面的兄弟
      soup.a.next_sibling
      soup.a.next_siblings

      # 查找上面的兄弟
      soup.a.previous_sibling
      soup.a.previous_siblings

- 搜索文档树 *******
  find: 找第一个
  find_all(): 找所有
  name、attrs、text

  - 文本过滤器 *******
      根据字符串进行过滤

      soup.find(name='a')
      soup.find_all(name='p')
      soup.find_all(attrs={"id": "link2"})
      soup.find(name='a', attrs={"id": 'p'})

  - re正则过滤器
      根据正则匹配过滤

      soup.find_all(name=re.compile('a'))
      soup.find_all(attrs={'id': re.compile('k')})
    - 列表过滤器
      根据列表内的元素匹配

      soup.find_all(name=['a', 'p'])
      soup.find_all(attrs={"id": ['link', 'k']})

  - bool过滤器

      soup.find_all(name=True)
      soup.find_all(attrs={"id":True})

  - 方法过滤器

      def has_id_not_class(tag):
          if tag.has_attr('id') and not tag.has_attr('class'):
              return tag

      soup.find_all(name=has_id_not_class)

  - 补充
      soup.find_all(id="link")
      soup.find_all(class_='sister')

 


解析库:
BeautifulSoup4

- 安装:
- 解析库安装
pip3 install beautifulsoup4

- 解析器安装
pip3 install lxml

- 基本使用
- 导入模块
from bs4 import BeautifulSoup

- 调用解析库BeautifulSoup
# 第一个参数是 解析的文本
# 第二个参数是 解析器
# 自动补全文档标签
soup = BeautifulSoup(html_doc, 'lxml')
print(soup)

- 标签美化
# prettify
html = soup.prettify()
print(html)
soup = BeautifulSoup(html, 'lxml')
print(soup)
- 遍历文档树
'''
1、直接使用
2、获取标签的名称
3、获取标签的属性
4、获取标签的内容
5、嵌套选择
6、子节点、子孙节点
7、父节点、祖先节点
8、兄弟节点
'''

- 搜索文档树
- find
查找第一个

- find_all
查找所有

- 标签查找与属性查找:

- 标签:
- 字符串过滤器 字符串全局匹配
name 属性匹配
attrs 属性查找匹配
text 文本匹配
- 正则过滤器
re模块匹配
- 列表过滤器
列表内的数据匹配
- bool过滤器
True匹配
- 方法过滤器
用于一些要的属性以及不需要的属性查找。

- 属性:
- class_
- id


配合requests模块使用:
import requests
res = requests.get('https://www.cnblogs.com/kermitjam/p/10863925.html')
print(res.text)

from bs4 import BeautifulSoup
soup = BeautifulSoup(res.text, 'lxml')

原文地址:https://www.cnblogs.com/tangda/p/10960974.html