BeautifulSoup使用一


title: BeautifulSoup使用一
date: 2019-03-04 16:49:37
tags:


  • 介绍:

    前面我们已经介绍了requests的使用,接下来学习beautifulsoup的使用,这个是python的第三方库,我们在dos下执行pip install bs4来安装使用,前面我们只是返回了请求的所有内容,但是我们的目的是得到自己想要的数据内容,因此我们需要将数据进行过滤,只要有价值的内容,因此这个库便是为了过滤使用的。

  • 使用

    import requests
    from bs4 import BeautifulSoup
    data="""<div class="subnav">
      <ul class="navbar">
        <li>
          <a data-act="subnav-click" data-val="{subnavClick:7}"
              href="/board/7"
          >热映口碑榜</a>
        </li>
        <li>
          <a data-act="subnav-click" data-val="{subnavClick:6}"
              href="/board/6"
          >最受期待榜</a>
        </li>
        <li>
          <a data-act="subnav-click" data-val="{subnavClick:1}"
              data-state-val="{subnavId:1}"
              class="active" href="javascript:void(0);"
          >国内票房榜</a>
        </li>
        <li>
          <a data-act="subnav-click" data-val="{subnavClick:2}"
              href="/board/2"
          >北美票房榜</a>
        </li>
        <li>
          <a data-act="subnav-click" data-val="{subnavClick:4}"
              href="/board/4"
          >TOP100榜</a>
        </li>
      </ul>
    </div>
    """
    print(type(data))
    data=BeautifulSoup(data,'html.parser')
    print(type(data))
    print(type(data.div.ul.li.a))
    print(data.div.ul.li.a)
    print(data.div.ul.li.a.string)
    print(data.div.ul.li.a.name)
    print(data.div.ul.li.a.attrs)
    
    
    =============== RESTART: C:\Users\Administrator\Desktop\aaa.py ===============
    <class 'str'>
    <class 'bs4.BeautifulSoup'>
    <class 'bs4.element.Tag'>
    <a data-act="subnav-click" data-val="{subnavClick:7}" href="/board/7">热映口碑榜</a>
    热映口碑榜
    a
    {'data-act': 'subnav-click', 'data-val': '{subnavClick:7}', 'href': '/board/7'}
    >>> 
    

    我们可以看到输出的结果,我将解释每句代码的含义

    • print(type(data))   
      
      <class 'str'>
      

      初始时data是字符串类型

    • data=BeautifulSoup(data,'html.parser')
      print(type(data))
      
      <class 'bs4.BeautifulSoup'>
      

      表示完成了beautifulsoup对象的初始化,其中的Beatifulsoup()有两个参数,一个是data一定要是字符串类型,还有便是html.parser这个表示使用的解析器,这个是python自带的一个解析器,通常使用的还有lxml等,在使用lxml时需要导入lxml模块,在dos下使用pip install lxml。

    • print(type(data.div.ul.li.a))
      
      <class 'bs4.element.Tag'>
      

      这个表示beautifulsoup的节点选择器,可以看到节点选择是可以嵌套的,并且返回的类型是bs4.element.Tag类型。

    • print(data.div.ul.li.a)
      
      <a data-act="subnav-click" data-val="{subnavClick:7}" href="/board/7">热映口碑榜</a>
      

      可以看到输出的结果是整个标签

    • print(data.div.ul.li.a.string)
      
      热映口碑榜
      

      bs.element.Tag类型的对象有string属性,返回的是标签里面的内容

    • print(data.div.ul.li.a.name)
      
      a
      

      bs.element.Tag类型的对象有name属性,返回的是标签的名字

    • print(data.div.ul.li.a.attrs)
      
      {'data-act': 'subnav-click', 'data-val': '{subnavClick:7}', 'href': '/board/7'}
      

      bs.element.Tag类型的对象有attrs属性,返回的是标签的属性,可以看到返回的是一个字典。

    • print(data.div.ul.li.a.attrs['data-act'])
      
      subnav-click
      

      可以看到我们可以使用键来访问属性的值

      print(data.div.ul.li.a['data-act'])
      
      subnav-click
      

      返回的仍然是建的值,因此这两种方法都可以访问属性的值,但如果没有data-act这个建便会报错

      print(data.div.ul.li.a['datact'])
      
      =============== RESTART: C:\Users\Administrator\Desktop\aaa.py ===============
      <class 'str'>
      <class 'bs4.BeautifulSoup'>
      <class 'bs4.element.Tag'>
      <a data-act="subnav-click" data-val="{subnavClick:7}" href="/board/7">热映口碑榜</a>
      热映口碑榜
      a
      Traceback (most recent call last):
        File "C:\Users\Administrator\Desktop\aaa.py", line 41, in <module>
          print(data.div.ul.li.a['datact'])
        File "D:\studyapp\python\lib\site-packages\bs4\element.py", line 1016, in __getitem__
          return self.attrs[key]
      KeyError: 'datact'
      >>> 
      
    • 还有便是data.prettify()函数的使用,这个的作用便是将原来没有顺序的字符串按照一定的格式输出。

      import requests
      from bs4 import BeautifulSoup
      data="""<p><p>hello</p></p>
      """
      data=BeautifulSoup(data,'html.parser')
      print(data.prettify())
      
      
      =============== RESTART: C:\Users\Administrator\Desktop\aaa.py ===============
      <p>
       <p>
        hello
       </p>
      </p>
      
      >>> 
      
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值