爬虫系列(九) xpath的基本使用

一、xpath 简介

究竟什么是 xpath 呢?简单来说,xpath 就是一种在 XML 文档中查找信息的语言

而 XML 文档就是由一系列节点构成的树,例如,下面是一份简单的 XML 文档:


    
        

Hello world

Click here

XML 文档中常见的节点包括:

  • 根节点:html
  • 元素节点:html、body、div、p、a
  • 属性节点:href
  • 文本节点:Hello world、Click here

XML 文档中常见的节点间关系包括:

对于网页解析来说,xpath 比 re 更加方便简洁,故 Python 中也提供相应的模块 —— lxml.etree

我们可以使用 pip install lxml 命令进行安装

二、xpath 使用

在正式开始讲解 xpath 的使用方法之前,我们先来构造一个简单的 XML 文档用于测试

在一般的爬虫程序中,XML 文档就是爬取回来的网页源代码

>>> sc = '''

    
        
        
        Example website
    
    
        
    

'''

1、导入模块

>>> from lxml import etree

2、构造对象

>>> html = etree.HTML(sc) # 构造 lxml.etree._Element 对象
>>> # lxml.etree._Element 对象还具有代码补全功能
>>> # 假如我们得到的 XML 文档不是规范的文档,该对象将会自动补全缺失的闭合标签
>>> # 我们可以使用 tostring() 方法将对象转化成 bytes 类型的字符串
>>> # 再使用 decode('utf-8') 方法将 bytes 类型的字符串转化为 str 类型的字符串
>>> print(etree.tostring(html).decode('utf-8'))

3、匹配数据

我们可以使用 xpath() 方法进行匹配

(1)xpath 匹配语法

xpath 方法接受一个满足 xpath 匹配语法的字符串作为参数

下面主要介绍一下 xpath 匹配语法:

(2)_Element 对象

xpath 方法返回字符串或者匹配列表,匹配列表中的每一项都是 lxml.etree._Element 对象

下面主要介绍一下 _Element 对象的常用属性与方法:

我们先用 xpath 方法得到匹配列表 tests 作为测试样例,tests 中的每一项都是一个 _Element 对象

>>> test = html.xpath('//a[@href="image1.html"]')
>>> obj = test[0]
  • tag 返回标签名
>>> obj.tag
'a'
  • attrib 返回属性与值组成的字典
>>> obj.attrib
{'href': 'image1.html'}
  • get() 返回指定属性的值
>>> obj.get('href')
'image1.html'
  • text 返回文本值
>>> obj.text
'Image1'

【参考资料】

  • https://lxml.de/tutorial.html

【爬虫系列相关文章】

  • 爬虫系列(一) 网络爬虫简介

  • 爬虫系列(二) Chrome抓包分析

  • 爬虫系列(三) urllib的基本使用

  • 爬虫系列(四) 用urllib实现英语翻译

  • 爬虫系列(五) re的基本使用

  • 爬虫系列(六) 用urllib和re爬取百度贴吧

  • 爬虫系列(七) requests的基本使用

  • 爬虫系列(八) 用requests实现天气查询

  • 爬虫系列(九) xpath的基本使用

  • 爬虫系列(十) 用requests和xpath爬取豆瓣电影

  • 爬虫系列(十一) 用requests和xpath爬取豆瓣电影评论

  • 爬虫系列(十二) selenium的基本使用

  • 爬虫系列(十三) 用selenium爬取京东商品

转载于:https://www.cnblogs.com/wsmrzx/p/9520942.html

你可能感兴趣的:(爬虫系列(九) xpath的基本使用)