zoukankan      html  css  js  c++  java
  • 第4课-BeautifulSoup

    BeautifulSoupeautifulSoup使用笔记

    from bs4 import BeautifulSoup
    
    '''
    1、find_all的使用:
        soup.find_all("ul");soup.find_all("ul",limit=2)[1];find_all("ul",class_="dl-tab-conten")
        soup.find_all("ul",attrs={"class":"dl-tab-conten","id":"J_NavContent"})
    2、find与find_all的区别
        find只会返回一个满足条件的标签
    3、使用find和find_all的过滤条件
        1、关键字获取,2、attrs参数获取
    4、获取标签的属性
        1、通过下表获取 href = a["href"]
        2、通过attrs属性获取 href = attrs["href"]
    5、string和stripped_strings、strings属性及get_text方法
        1、string获取某个标签下的非标签字符串
        2、strings获取某个标签下的子孙非标签字符串
        3、stripped_strings获取某个标签下的子孙非标签字符串并去掉空格
        4、get_text()获取某个标签下的子孙非标签字符串,不是以列表的形式返回而是以字符串的形式返回
    select方法
    '''
    """
    1、Tag:BeautifulSoup中所有的标签都是Tag类型,并且BeautifulSoup的对象其本质上也是一个
    Tag类型,所以其实一些方法比如find、find_all并不是BeautifulSoup的,而是Tag的。
    2、NavigableString:继承自python中的str,用起来就跟使用python的str是一样的
    3、BeautifulSoup:继承Tag,用来生成BeautifulSoup数的,对于一些查找方法,比如find、select这些
    ,其实还是Tag
    4、Coment:这个也没什么好说的,就是继承自NavigableString
    5、contents和children:返回某个标签下的直接子元素,其中也包含字符串,他们的区别是:contents返回的是一个列表,chidren
    返回的是一个迭代器
    CSS 选取器
    p 标签
    .class 类
    #id 
    p > a 仅仅子元素
    p a 子孙元素
    input[class="pwd"]
    """
    
    html = """
    <html>
     <head>
      <title>easytest测试平台</title>
       <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
       <link href="/static/css/dpl-min.css" rel="stylesheet" type="text/css" />
      <link href="/static/css/bui-min.css" rel="stylesheet" type="text/css" />
       <link href="/static/css/main-min.css" rel="stylesheet" type="text/css" />
       <link rel="shortcut icon" href="/static/img/title.ico">
    
     </head>
     <body style="min-height: 1200px;" >
    
      <div class="header">
        
          <div class="dl-title">
            <a href="http://www.baidu.com" title="关于我们">
              <span class="lp-title-port">easytest测试平台</span><span class="dl-title-text"></span>
            </a>
          </div>
    
          <div class="dl-log">欢迎您,小伙伴</div>
        </div>
      </div>
       <div class="content">
        <div class="dl-main-nav">
          <div class="dl-inform"><div class="dl-inform-title">贴心小秘书<s class="dl-inform-icon dl-up"></s></div></div>
          <ul id="J_Nav"  class="nav-list ks-clear">
            <li class="nav-item dl-selected"><div class="nav-item-inner nav-home">首页</div></li>
          </ul>
        </div>
        <ul id="J_NavContent" class="dl-tab-conten">
    
        </ul>
       </div>
      <script type="text/javascript" src="/static/js/jquery-1.8.1.min.js"></script>
      <script type="text/javascript" src="/static/js/bui.js"></script>
    
      <script type="text/javascript" src="/static/js/config.js"></script>
    
      <script>
        BUI.use('common/main',function(){
          var config = [{
              id:'menu',
              homePage : 'home',
              menu:[{
                  text:'目录',
                  items:[
                    {id:'home',text:'接口管理',href:'home',closeable : true},
                    {id:'back',text:'后台管理',href:'/admin',closeable : true}
                  ]
                },
              {
                  text:'常用地址及工具',
                  items:[
                    {id:'link',text:'地址集合',href:'link',closeable : true},
                    {id:'tool',text:'工具',href:'tool',closeable : true}
    
                  ]
                },
    
    
              ]
              },
          ];
          new PageUtil.MainPage({
            modulesConfig : config
          });
        });
      </script>
      <p>
        <!-- 我是注释 -->
      </p>
     </body>
    </html>
    """
    soup = BeautifulSoup(html,"lxml") #创建beautifulsoup对象,lxml为解析器,解析器:html5lib
    
    #1、获取所有ul标签
    uls = soup.find_all("ul")
    #2、获取第二个ul标签
    ul_2 = soup.find_all("ul",limit=2)[1]
    # print(ul_2)
    # for ul in uls:
    #     print(type(ul))
    #3、获取所有class等于dl-tab-conten
    trs = soup.find_all("ul",class_="dl-tab-conten")
    
    # print(uls)
    #4、获取所有class="dl-tab-conten" id="J_NavContent"的标签
    uls = soup.find_all("ul",attrs={"class":"dl-tab-conten","id":"J_NavContent"})
    # print(uls)
    #5、获取所有a标签的href属性
    aList = soup.find_all("a")
    for a in aList:
        href = a["href"]
        # print(href)
        #通过attrs属性的方式
        href = a.attrs["href"]
        # print(href)
    divs = soup.find_all("div")
    # for div in divs:
        # print(div.string)#获取文本
        # infos = list(div.strings)#获取所有文本
        # print(infos)
        # infos = list(div.stripped_strings)#获取所有文本并去空格
        # print(infos)
        # infos = div.get_text()
        # print(infos)
    
    #css选择器提取元素
    #1、获取所有div标签
    divs = soup.select("div")
    print(divs)
    #2、获取第2个div标签
    soup.select("div")[1]
    #3、获取所有class等于even的tr标签
    divs = soup.select("div.lp-title-port")
    div = soup.select("div[class='lp-title-port']")
    #4、获取所有a标签的href属性
    aList = soup.select("a")
    for a in aList:
        print(a["href"])
    p = soup.find("p")
    print(p.string)
    
    div =  soup.find("div")
    print(div.contents)
  • 相关阅读:
    前端 时间个性化 插件 jquery.timeago.js
    IP釋放、清除、以及刷新DNS
    Visual Studio 2019 16.0 正式版下载
    handlebars.js 用 <br>替换掉 内容的换行符
    c#-SimHash匹配相似-算法
    索尼Sony ATI显卡驱动 Win7 Win8 Win8.1 视频黑屏 解决方法
    c#-冒泡排序-算法
    c#-二分查找-算法
    c#-快速排序-算法
    win8.1中安装sql2014 0x800F0906 【 Error while enabling Windows feature : NetFx3, Error Code : -2146498298 】
  • 原文地址:https://www.cnblogs.com/win0211/p/12012968.html
Copyright © 2011-2022 走看看