zoukankan      html  css  js  c++  java
  • 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')

  • 相关阅读:
    jQuery.getJSON的缓存问题的解决办法
    MFC Tab Control控件的详细使用
    JavaScript 闭包深入理解(closure)
    STL中sort函数用法简介
    STL中qsort的七种用法
    学习Javascript闭包(Closure)
    使用 Visual Studio 分析器找出应用程序瓶颈
    各种语言性能测试工具一览表
    Javascript 链式作用域
    MessageBox、::MessageBox 、AfxMessageBox三者的区别 .
  • 原文地址:https://www.cnblogs.com/tangda/p/10960974.html
Copyright © 2011-2022 走看看