zoukankan      html  css  js  c++  java
  • Lxml

      Lxml 是基于 libxml2 这一 XML解析库的 Python 封装。该模块使用 C 语言编写,解析速度比 Beautiful Soup 更快,不过安装过程也更为复杂,最新的安装说明可以参考 http;//Lxml.de/indtallation.html.

      和 Beautiful Soup 一样,使用 Lxml 模块的第一步也是将有可能不合法的 HTM 解析为统一格式,下面是使用该模块解析统一个不完整 HTML 的例子。

    >>> import lxml.html
    >>> broken_html = '<ul class=country><li>Area <li>Population </ul>'
    >>> tree = lxml.html.fromstring(broken_html)
    >>> fixed_html = lxml.html.tostring(tree, pretty_print = True)
    >>> print(fixed_html)
    b'<ul class="country">
    <li>Area </li>
    <li>Population </li>
    </ul>
    '

    lxml 和 Beautiful Soup 一样也可以正确解析两侧缺失是我引号,并闭合标签,不过该模块没有添加<html> 和 <boby> 标签。

    解析完输入内容后,进入选择元素的步骤,此时 lxml 有几种不同的方法,比如 XPath 选择器和类似 Beautiful Soup 的 find() 方法。

    下面使用 lxml 的 CSS 选择器抽取面积数据的实例代码。

      CSS 选择穷的关键代码已经被加粗显示。

    CSS 选择器

      CSS 选择器表示选择元素所使用的模式,下面是一些常用的选择器示例。

      选择所有的标签:*

      选择<a> 标签:a

      选择所有 class = 'link' 的元素: .link

      选择 class = 'link' 的 <a> 标签:a.link

      选择 id = 'home' 的 <a> 标签, a#home

      选择父元素为 <a> 标签的所有 <span> 字标签: a > span

      选择 <a> 标签内部的所有 <span> 标签: a span

      选择 title 属性为 ‘home’ 的所有 <a> 标签: a[titile = home]

    Lxml 已经实现了大部分 CSS3 属性,其不支持的功能可以参见 httpS://pythonhosted.org/cssselect/#supported-selectors

    需要注意的是,lxml 在内部实现中,实际上是将 CSS 选择器转换为等价的 XPath 选择器。

     

     

      

  • 相关阅读:
    分页 工具类 前后台代码 Java JavaScript (ajax) 实现 讲解
    java 对小数位的处理 BigDecimal DecimalFormat 常用操作 浅解
    事务 锁 悲观锁 乐观锁 概念 应用场景 使用方式 小记
    多项目使用同一个zookeeper,遇到的坑
    java线程关键字之volatile
    数据库事务
    Web.xml配置详解之context-param
    WINDOWS上KAFKA运行环境安装
    hibernate 之session学习
    windows 安装hadoop
  • 原文地址:https://www.cnblogs.com/jcjc/p/10874139.html
Copyright © 2011-2022 走看看