zoukankan      html  css  js  c++  java
  • 【Rollo的Python之路】Python 爬虫系统学习 (四) XPath学习

    XPath学习:(XML Path Language)

    XML:Extensible Markup Language (可扩展标记语言),被设计为传输和存储数据,其焦点是数据的内容

    HTML:HyperText Markup Language(超文本标记语言),

    XPath 是一门在 XML 文档中查找信息的语言。XPath 用于在 XML 文档中通过元素和属性进行导航。

    1.0 XPath 术语:

    在 XPath 中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点。XML 文档是被作为节点树来对待的。树的根被称为文档节点或者根节点。

     2.0 节点选择语法:

    表达式 描述
    nodename 选取此节点的所有节点
    / 从根节点选取
    //   从匹配选择的当前节点选择文档的节点,而不考虑它们的位置
    . 选取当前节点
    .. 选取当前节点的父节点
    @ 选取属性
    @[] 定位

    3.0 xpath的学习重点:

    -使用xpath helper 或者是chrome中的copy xpath都是从element中提取的数据。

    但是爬虫获取的url对应的响应,往往和elements 不一样

    ---获取文本
      'a/text()' 获取a的文本
      ‘a//text()’ 获取a 的所有文本
      '//a[text()="下一页"]',所选文本为“下一页” 三个字的a标签。
    ---获取属性:@符号:
      'a/@href'
      '//ul[@id="detail-list"]'
    --- 在xpath开始的时候表示当前html中任意位置开始选择
      ‘li//a’ 表示的是li下任何一个标签

    4.0 lxml库:

    使用入门:

    • 导入lxml的etree库
    from lxml import etree
    • 利用etree.HTML,将字符串转化为Element对象
    • Element对象具有xpath的方法
    html = etree.HTML(text)
    html.xpath("")
    • lxml可以自动修正html代码

    5.0 lxml使用注意点

    ---lxml 能够修正HTML代码,但是可能会改错了

        使用etree.tostring观察修改之后的html的样子,根据修改之后的html的字符串写xpath

    ---lxml 能够接受bytes和str的字符串

    ---提取页面数据的思路

        先分组,取到一个包含分组标签的列表

        遍历,取其中每一组进行数据的提取,不会造成数据的对应错乱

  • 相关阅读:
    学习Spring-Data-Jpa(二十二)---事务处理
    学习Spring-Data-Jpa(二十一)---DataSource与JPA属性配置
    学习Spring-Data-Jpa(二十)---@EnableJpaRepositories
    学习Spring-Data-Jpa(十九)---JPA的持久性上下文
    学习Spring-Data-Jpa(十八)---JPA的继承策略
    REST简介
    H5离线缓存机制-manifest
    Javascript 异步加载详解
    jQuery Ajax 实例 全解析
    整屏滚动效果 jquery.fullPage.js插件+CSS3实现
  • 原文地址:https://www.cnblogs.com/rollost/p/11077201.html
Copyright © 2011-2022 走看看