欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

入坑爬虫(八)数据提取之xpath

程序员文章站 2024-01-12 19:42:10
...

lxml是一款高性能的 Python HTML/XML 解析器,我们可以利用XPath,来快速的定位特定元素以及获取节点信息

认识xml

  • 知识点:
    • html和xml的区别
    • xml中各个元素的的关系和属性

入坑爬虫(八)数据提取之xpath

xpath中节点选择的工具

注意: 这些工具是用来学习xpath语法的,他们都是从elements中匹配数据,elements中的数据和url地址对应的响应不相同,所以在代码中,不建议使用这些工具进行数据的提取

xml的树结构

<bookstore>
<book category="COOKING">
  <title lang="en">Everyday Italian</title> 
  <author>Giada De Laurentiis</author> 
  <year>2005</year> 
  <price>30.00</price> 
</book>
<book category="CHILDREN">
  <title lang="en">Harry Potter</title> 
  <author>J K. Rowling</author> 
  <year>2005</year> 
  <price>29.99</price> 
</book>
<book category="WEB">
  <title lang="en">Learning XML</title> 
  <author>Erik T. Ray</author> 
  <year>2003</year> 
  <price>39.95</price> 
</book>
</bookstore>

上面的xml内容可以表示为下面的树结构
入坑爬虫(八)数据提取之xpath

xpath的节点关系
每个XML的标签我们都称之为节点,其中最顶层的节点称为根节点。

入坑爬虫(八)数据提取之xpath
xpath中节点的关系
入坑爬虫(八)数据提取之xpath

xpath语法
我们将在下面的例子中使用这个 XML 文档。

<bookstore>

<book>
  <title lang="eng">Harry Potter</title>
  <price>29.99</price>
</book>

<book>
  <title lang="eng">Learning XML</title>
  <price>39.95</price>
</book>

</bookstore>

选取节点
XPath 使用路径表达式来选取 XML 文档中的节点或者节点集。这些路径表达式和我们在常规的电脑文件系统中看到的表达式非常相似。

使用chrome插件选择标签时候,选中时,选中的标签会添加属性class=”xh-highlight”

下面列出了最有用的表达式:
入坑爬虫(八)数据提取之xpath

实例
在下面的表格中,已列出了一些路径表达式以及表达式的结果:

入坑爬虫(八)数据提取之xpath

xpath基础语法练习
接下来我们听过豆瓣电影top250的页面来练习上述语法:https://movie.douban.com/top250

  • 选择所有的h1下的文本

    //h1/text()

  • 获取所有的a标签的href

    //a/@href

  • 获取html下的head下的title的文本

    /html/head/title/text()

  • 获取html下的head下的link标签的href

    /html/head/link/@href

但是当我们需要选择所有的电影名称的时候会特别费力,通过下一小节的学习,就能够解决这个问题

查找特定的节点
入坑爬虫(八)数据提取之xpath
注意点: 在xpath中,第一个元素的位置是1,最后一个元素的位置是last(),倒数第二个是last()-1

xpath基础语法练习2:
从豆瓣电影top250的页面中:选择所有的电影的名称,href,评分,评价人数

选取未知节点
XPath 通配符可用来选取未知的 XML 元素。
入坑爬虫(八)数据提取之xpath

实例
在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:
入坑爬虫(八)数据提取之xpath

选取若干路径
通过在路径表达式中使用“|”运算符,您可以选取若干个路径。

实例
在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:
入坑爬虫(八)数据提取之xpath

下一小节我们会说到xpath在python中的使用.