zoukankan      html  css  js  c++  java
  • Beautiful Soup

      Beautiful Soup 是一个非常流行的 Python 模块,该模块可以解析网页,并提供定位内容的便捷接口,如果你还没有安装该模块,可以使用下面的命令安装其最新版本:

    pip install beautifulsoup4

      使用 Beautiful Soup 的第一步是将已下载的 HTML 内容解析为 soup 文档。由于大多数网页都不具备良好的 HTNML 格式,因此, Beautiful Souop 需要对其实际格式进行确定,

    例如,下面的这个简单的网页的列表中,存在属性值两侧引号缺失为闭合的额问题。

    <ul class = country>
        <li>Area
        <li>Population
    </ul>

    如果 Population 列表被解析为 Area 列表项的子元素,而不是并列的两个列表项的话,我们抓取时就会得到错误的结果,下面我们看一下 Beauutful Soup 是如何处理的,

    >>> from bs4 import BeautifulSoup
    >>> broken_html = '<ul class = country>     <li>Area     <li>Population </ul>'
    >>> soup = BeautifulSoup(broken_html, 'html.parser')
    >>> fixed_html = soup.prettify()
    >>> print(fixed_html)
    <ul class="country">
     <li>
      Area
      <li>
       Population
      </li>
     </li>
    </ul>
    >>>

    从上面的执行的结果可以看出,Beautiful Soup 能够正确的解析缺失的引号闭合标签。

    现在,可以使用 find() 和 find_all() 方法类定位我们需要的元素了。

    >>> ul = soup.find('ul', attrs = {'class':'country'})
    >>> ul.find('li')
    <li>Area     <li>Population </li></li>
    >>> ul.find_all('li')
    [<li>Area     <li>Population </li></li>, <li>Population </li>]

    下面是使用该方法抽取实例国家面积数据的完整代码。

     这段代码虽然比正则表达式的代码更加复杂,但更容易构造和理解。

  • 相关阅读:
    ASP.NET Core 2.0 : 四. _Layout与_ViewStart
    [ASP.NET MVC 小牛之路]04
    [ASP.NET MVC 小牛之路]03
    [ASP.NET MVC 小牛之路]02
    [ASP.NET MVC 小牛之路]01
    Ext JS 4 的类系统
    生活沉思录 via 哲理小故事(一)
    ExtJS框架基础:事件模型及其常用功能
    ExtJS初探:了解 Ext Core
    ExtJS初探:在项目中使用ExtJS
  • 原文地址:https://www.cnblogs.com/jcjc/p/10873949.html
Copyright © 2011-2022 走看看