爬虫002

xml:可扩展标记语言

使用场景:

1.跨平台,2.异构客户端,3.作为项目数据源,

4.作为页面的数据源,5.作为框架的配置文件

xml和json:

1.都是用来传输和存储数据

2.xml是以标签形式存在的,json是纯数据

3.xml文件比json传输时要大,所以传输占用资源,速度慢

4.xml需要解析,浪费时间

    xml:

           <person>

                    <name>张三</name>

                    <age>19</age>

          </person>

  json:[{'person1':{'name':'张三', 'age':'19'}}]

xml和html:

1.xml是重在传输,html是重在显示

2.xml基本没有预定义标签,html基本都是预定义标签

3.xml在特定的场景需要约束

DTD,schema,<![CDATA[数据]]>

选取节点:XPath 使用路径表达式来选取 XML 文档中的节点戒者节点集。

/,//,点,点点,@

谓语(Predicates):谓语用来查找某个特定的节点戒者包含某个指定的值的节点,被嵌在方括号中

book[1],book[ last() ],book[ last() - 1 ],book[ position() < 3 ],

title[@lang],title[@lang="eng],

book[price>35.00],book[price>35.00]/title,

//title[ contains(@lang),"e" ]

选取未知节点:*,  @*,   node()

选取若干路径:|

XPath 的运算符:

|   计算两个节点集(//book  |  //cd返回所有拥有book和cd元素的节点)

+, -,*,div除,

=,!=,<,<=,>,>=,

or或,and与,mod余数 

/school :从根节点的位置开始选取

/school/python :选取python节点 

/school//class:选取所有的class节点,子孙节点   //school

.     :选取当前节点

.  .  :选取当前节点的父节点

@:选取属性

选取每个每个班级所在的教室 /school//class/@addr,//class/@addr

选取u3d下第一个class节点:/school/u3d/class[1](从1开始)

选取u3d下最后一个class节点:/school/u3d/class[  last() ]

选取u3d下倒数第二个class节点:/school/u3d/class[  last() - 1]

前两个:/school/u3d/class[ position<3 ]

查找教室等于研发一:/school//class[ @addr="研发一 " ]

/school//class[ @addr ]

属性lang包含e字符://title[  contains(@lang,“e”) ]

*       匹配任何元素节点

@*   匹配任何属性的节点

node()  匹配任何类型的节点

//book/title |  //book/price  选取book下面的title节点和price节点

//book |  //price   文档中

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值