beautifhulsoup4的使用

Posted tangda

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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‘)

以上是关于beautifhulsoup4的使用的主要内容,如果未能解决你的问题,请参考以下文章

webstorm代码片段的创建

使用 Git 来管理 Xcode 中的代码片段

Android课程---Android Studio使用小技巧:提取方法代码片段

VIM 代码片段插件 ultisnips 使用教程

使用 Pygments 检测代码片段的编程语言

创建自己的代码片段(CodeSnippet)