一、xml是什么

  1、定义:可扩展标记性语言
  2、特点:xml的是具有自描述结构的半结构化数据。
  3、作用:xml主要设计宗旨是用来传输数据的。他还可以作为配置文件。

二、xml和html的区别

  1、语法要求不同:xml的语法要求更严格。

    (1)html不区分大小写的,xml区分。
    (2)html有时可以省却尾标签。xml不能省略任何标签,严格按照嵌套首位结构。
    (3)只有xml中有自闭标签(没有内容的标签,只有属性。)<a class='abc'/>
    (4)在html中属性名可以不带属性值。xml必须带属性值。  
    (5)在xml中属性必须用引号括起来,html中可以不加引号。

  2、作用不同

    html主要设计用来显示数据以及更好的显示数据。
    xml主要设计宗旨就是用传输数据

  3、标记不同:xml没有固定标记,html的标记都是固定的,不能自定义。

三、xpath

  1、什么是xpath?

    xpath是一种筛选html或者xml页面元素的【语法】

  2、xml和html的一些名词

    元素、标签、属性、内容

  3、xml的两种解析方法

    dom和sax

  4、xpath语法

    (1)选取节点

        nodename --- 选取此标签及其所有字标签。
        /----从根节点开始选取。
        // ----从任意节点开始,不考虑他们的位置。
        //book---不管book位置,在xml中取出所有的book标签。
        .----当前节点开始找
        ..----从父节点
        @ ---选取属性
        text()---选取内容

    (2)谓语:起限定的作用,限定他前面的内容。

        []写在谁的后面,就限定谁,一般用于限定元素或者标签。

        //book[@class='abc']

        常见的谓语:
          [@class] ----选取有class
          [@class='abc'] ---选取class属性为abc的节点。
          [contains(@href,'baidu')] ---选取href属性包含baidu的标签
          [1] ---选取第一个
          [last()]---选取最后一个
          [last()-1]---选取倒数第二
          [position()>2]---跳过前两个。
          book[price>30]

    (3)通配符

        * ---匹配任意节点
        @* ---匹配任意属性

    (4)选取若干路径

      | ---左边和右边的xpath选的内容都要---and

  5、lxml模块----python处理xml和html的模块。

    (1)解析字符创类型xml

 from lxml import etree
text='''
html页面内容
'''
tree = etree.HTML(text)---返回值就是一个element对象
#element对象有xpath方法,可以通过xpath表达式来筛选内容。
#选取class属性为item-1的li下面的a标签的内容
a_contents = tree.xpath('//li[@class="item-1"]/a/text()') 将element对象变成字符串的方法
# html_str = etree.tostring(tree,pretty_print=True).decode('utf-8')
# print(type(html_str))

      #elment对象xpath放来筛选,返回值都是一个list。
      #xpath表达式最后一个是一个元素(标签),list中都是elment元素
      #xpath表达式最后一个是属性,list都是属性字符串
      #xpath表达式最后一个是内容,list都是内容字符串

    (2)解析xml或者html文件      

from lxml import etree

#parse方法是按照xml的方式来解析,如果语法出问题,就会报错。
html = etree.parse('demo.html') # print(html)#_ElementTree
li_texts = html.xpath('//li/a/text()') print(li_texts)

【python爬虫】Xpath的更多相关文章

  1. python爬虫xpath的语法

    有朋友问我正则,,okey,其实我的正则也不好,但是python下xpath是相对较简单的 简单了解一下xpath: XPath 是一门在 XML 文档中查找信息的语言.XPath 可用来在 XML ...

  2. python爬虫xpath

    又是一个大晴天,因为马上要召开十九大,北京地铁就额外的拥挤,人贴人到爆炸,还好我常年挤地铁早已练成了轻功水上漂,挤地铁早已经不在话下. 励志成为一名高级测试工程师的我,目前还只是个菜鸟,难得有机会,公 ...

  3. Python爬虫 XPath语法和lxml模块

    XPath语法和lxml模块 什么是XPath? xpath(XML Path Language)是一门在XML和HTML文档中查找信息的语言,可用来在XML和HTML文档中对元素和属性进行遍历. X ...

  4. python爬虫----XPath

    1.知道本节点元素,如何定位到兄弟元素 详情见博客 XML代码见下 bt1在文档中只出现一次,所以很容易获取到bt1中内容,那怎么根据<td class='bt1'>来获取bt2中的内容 ...

  5. Python爬虫 | xpath的安装

    错误信息:程序包无效.详细信息:“Cannot load extension with file or directory name . Filenames starting with "& ...

  6. python爬虫前提技术

    1.BeautifulSoup 解析html如何使用 转自:http://blog.csdn.net/u013372487/article/details/51734047 #!/usr/bin/py ...

  7. Python爬虫与数据分析之爬虫技能:urlib库、xpath选择器、正则表达式

    专栏目录: Python爬虫与数据分析之python教学视频.python源码分享,python Python爬虫与数据分析之基础教程:Python的语法.字典.元组.列表 Python爬虫与数据分析 ...

  8. python爬虫的页面数据解析和提取/xpath/bs4/jsonpath/正则(1)

    一.数据类型及解析方式 一般来讲对我们而言,需要抓取的是某个网站或者某个应用的内容,提取有用的价值.内容一般分为两部分,非结构化的数据 和 结构化的数据. 非结构化数据:先有数据,再有结构, 结构化数 ...

  9. Python爬虫教程-22-lxml-etree和xpath配合使用

    Python爬虫教程-22-lxml-etree和xpath配合使用 lxml:python 的HTML/XML的解析器 官网文档:https://lxml.de/ 使用前,需要安装安 lxml 包 ...

  10. 小白学 Python 爬虫(19):Xpath 基操

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

随机推荐

  1. JavaScript 原型 prototype 使用经验

    初始化一个父类,并添加方法 1function Foo(){}2Foo.prototype.sayName = function(){3    return '初始原型';4}56var foo1 = ...

  2. Python3 面向对象小练习

    定义MySQL类 对象有id.host.port三个属性 定义工具create_id,在实例化时为每个对象随机生成id,保证id唯一 提供两种实例化方式,方式一:用户传入host和port 方式二:从 ...

  3. 【Redis】349- Redis 入门指南

    点击上方"前端自习课"关注,学习起来~ 1. 概述 1.1. Redis 简介 Redis 是速度非常快的非关系型(NoSQL)内存键值数据库,可以存储键和五种不同类型的值之间的映 ...

  4. Oracle - 通过dg,完成单实例到rac的迁移

    一.概述 本文将介绍如何给单实例搭建一个rac dg,以及如何对其进行角色转换,完成从单实例到rac的迁移.预先具备的知识(rac搭建,单实例-单实例dg搭建) 二.实验环境介绍 主库(已有数据库实例 ...

  5. 让外部的开发机直接访问Kubernetes群集内的服务!

    让外部的开发机直接访问Kubernetes群集内的服务! 1.场景 容器化+K8s编排已经是现在进行时把网站的多个项目设计为云原生(Cloud Native)或老项改造为云原生可以获得诸多能力例如无云 ...

  6. 【原创】005 | 搭上SpringBoot请求处理源码分析专车

    前言 如果这是你第二次看到师长,说明你在觊觎我的美色! 点赞+关注再看,养成习惯 没别的意思,就是需要你的窥屏^_^ 专车介绍 该趟专车是开往Spring Boot请求处理源码分析专车,主要用来分析S ...

  7. webpack学习2.2webpack简介,初步了解

    webpack V1功能进化 编译打包 HMR(模块热更新) 代码分割 文件处理(loader) webpack V2功能进化 tree shaking(并欸有在项目中使用的代码不会打包到里面,打包之 ...

  8. 中文分词接口api,采用结巴分词PHP版中文分词接口

    中文分词,分词就是将连续的字序列按照一定的规范重新组合成词序列的过程.我们知道,在英文的行文中,单词之间是以空格作为自然分界符的,而中文只是字.句和段能通过明显的分界符来简单划界,唯独词没有一个形式上 ...

  9. JSON在线解析及格式化校验工具 jsonin.com

    JSON在线解析及格式化校验工具 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它使得人们很容易的进行阅读和编写.同时也方便了机器进行解析和生成.它是基 ...

  10. Nginx入门教程-简介、安装、反向代理、负载均衡、动静分离使用实例

    场景 Nginx入门简介和反向代理.负载均衡.动静分离理解 https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/102790862 Ub ...