zoukankan      html  css  js  c++  java
  • “美汤”的select的详细用法

    前两天在网上看到了一个机器学习算法的实战案例,就决定上手学习,因为要用到一个豆瓣网的电影信息及评论,我本来可以使用Scrapy框架进行爬取,但是实战的案例用了requests+BeautifulSoup,

    我就跟着写了一部分代码,就遇到了今天的主要内容,BeautifulSoup的使用以及select函数的使用方法

    前面瞎扯了好多,敲黑板,下面是重点:

    (1)实例化BeautifulSoup对象(比较简单)

     soup = BeautifulSoup(markup, “lxml”);(markup是返回的HTML源码,‘lxml’是一种更加强大,速度更快解释器,推荐安装使用)

    (2)select函数的使用---提取所需内容(主要内容)

    因为某个原因,所以不能以豆瓣网为例,所以换用猫眼电影进行分析;

    <div class="movie-item">
          <a href="/films/1217023" target="_blank" data-act="movie-click" data-val="{movieid:1217023}">
          <div class="movie-poster">
            <img class="poster-default" src="//s3plus.meituan.net/v1/mss_e2821d7f0cfe4ac1bf9202ecf9590e67/cdn-prod/file:5788b470/image/loading_2.e3d934bf.png" />
            <img data-src="https://p0.meituan.net/movie/b0e0d6ce9914f37e7f9f6ade13e096342721150.jpg@160w_220h_1e_1c" alt="唐人街探案3海报封面" />
          </div>
          </a>
          <div class="movie-ver"><i class="imax2d"></i></div>
        </div>
        <div  class="channel-detail movie-item-title" title="唐人街探案3">
          <a id= "id" href="/films/1217023" target="_blank" data-act="movies-click" data-val="{movieId:1217023}">唐人街探案3</a>
    </div>
    <div class="channel-detail channel-detail-orange"><span class="stonefont">15213231</span>人想看</div>
    • 通过标签名查找  

       使用soup.select('a'),则返回了所有a标签中的内容

    [<a data-act="movie-click" data-val="{movieid:1217023}" href="/films/1217023" target="_blank">
    <div class="movie-poster">
    <img class="poster-default" src="//s3plus.meituan.net/v1/mss_e2821d7f0cfe4ac1bf9202ecf9590e67/cdn-prod/file:5788b470/image/loading_2.e3d934bf.png"/>
    <img alt="唐人街探案3海报封面" data-src="https://p0.meituan.net/movie/b0e0d6ce9914f37e7f9f6ade13e096342721150.jpg@160w_220h_1e_1c"/>
    </div>
    </a>, <a data-act="movies-click" data-val="{movieId:1217023}" href="/films/1217023" target="_blank">唐人街探案3</a>]
    • 通过类名查找

      使用soup.select('.movie-item-title'),则返回了所有class中包含movie-item-title的内容,注意:使用类名查找是时不要忘记类名前面的‘.’

      [<div class="channel-detail movie-item-title" title="唐人街探案3"><a data-act="movies-click" data-val="{movieId:1217023}" href="/films/1217023" target="_blank">唐人街探案3</a> </div>]

    • 通过 id 名查找

      使用soup.select('#id'),则返回了所有id中包'id'的内容,注意:使用id名查找是时不要忘记类名前面的‘#’

      [<a data-act="movies-click" data-val="{movieId:1217023}" href="/films/1217023" id="id" target="_blank">唐人街探案3</a>]

    • 组合查找
      • 标签和class、id组合

            1、使用soup.select('div.movie-item-title')(标签+class),则返回

            [<div class="channel-detail movie-item-title" title="唐人街探案3"><a data-act="movies-click" data-val="{movieId:1217023}" href="/films/1217023" id="id" target="_blank">唐人街探案3</a></div>]

              2、使用soup.select('a#id')(标签+id),则返回

              [<a data-act="movies-click" data-val="{movieId:1217023}" href="/films/1217023" id="id" target="_blank">唐人街探案3</a>]

      • 直接查找子标签

                使用soup.select('div.movie-item-title>a'),则返回

            [<a data-act="movies-click" data-val="{movieId:1217023}" href="/films/1217023" id="id" target="_blank">唐人街探案3</a>]

    • 属性查找

         使用soup.select('a[data-act="movies-click"]'),则返回

        [<a data-act="movies-click" data-val="{movieId:1217023}" href="/films/1217023" id="id" target="_blank">唐人街探案3</a>]

    注意:

        1、大家注意到soup.select返回的是类似一个列表的数据类型,其实为"bs4.element.ResultSet"这样一种类型数据

     2、大家注意到soup.select返回的信息还有好多的HTML代码,所以需要使用get_text()函数提取文字信息,但是"bs4.element.ResultSet"无法直接使用该函数,必须先获取列表中的元素,

      其元素类型为"bs4.element.Tag",才可以使用该函数;

      其实可以类比列表类型进行理解。

    本文为个人摸索学习内容,如有误请联系作者

  • 相关阅读:
    C3P0的详细配置说明
    关于commons-fileupload组件上传文件中文名乱码问题
    手写JDBC
    使用try-with-resource遇到的问题
    Java基础学习总结——Java对象的序列化和反序列化
    IDEA查看第三方jar包的源代码时出现Decompiled.class file, bytecode version:52.0 (Java 8)的解决方案
    软件工程课程周进度报告 第六周
    地铁合作的第二周
    第六周进度总结
    地铁合作的第一周
  • 原文地址:https://www.cnblogs.com/KYin/p/12465058.html
Copyright © 2011-2022 走看看