pyhton爬虫(9)——使用XPath提取网页信息

1. XPath基础

1.1 什么是XPath?

XPath 是一门在 XML 文档中查找信息(节点)的语言XPath 可用来在 XML 文档中对元素属性进行遍历。

1.2 节点

节点是XPath提取XML文档信息的最小单位,一共有7种

(1)元素节点(element)

(2)属性节点(attribute)

(3)文本节点(text)

(4)名称命名节点(namespace)

(5)处理命令节点(processing-instruction)

(6)注释节点(comment)

(7)根节点(root)

1.3 节点关系

(1)父节点(parent):每个元素以及属性都有一个父节点。

(2)子节点(child):元素节点可以有零个、一个或多个子节点。

(3)同胞节点(sibling): 拥有相同的父的节点。

(4)前辈节点(ancestor):某节点的父节点的父节点。

(5)后代(descendant):某节点的子节点的子节点。

1.4 XPath 基本用法

1.4.1 基本语法:

(1)//(双斜杠)定位根节点,会对全文进行扫描,在文档中选取所有符合条件的内容,以列表的形式返回

(2)/(单斜杠):寻找当前标签路径的下一层路径标签或者对当前路标签内容进行操作 。

(3) /text():获取当前路径下的文本内容

(4)/@xxxx:提取当前路径下标签的属性值

(5) | 可选符:使用|可选取若干个路径 如//p | //div 即在当前路径下选取所有符合条件的p标签div标签

(6). 点:用来选取当前节点

(7)..(双点):选取当前节点的父节点

(8)“*”(通配符):表示匹配任何元素节点

(9)“@*”(通配符):表示匹配任何属性值

(10)“node()”(通配符):表示匹配任何类型的节点

1.4.2 XPath提取元素示例

# -*- coding: utf-8 -*-
"""
Created on Tue Jul 18 10:23:19 2017

@author: Administrator
"""

from lxml import etree

text = '''<html>

    <div class="large" id="content">

        <span>A line of text</span><br/>

        <span><a href="http://google.com">A link</a></span>

    </div>

    <div class="short" id="footer">

    </div>
</html>
'''

html = etree.HTML(text)
#result1 = etree.tostring(html)
#print(result1)

#(1)提取class属性值为large的div标签中的id属性值
print("id属性值:",html.xpath('//div[@class="large"]/@id')[0])

#(2)提取第一个span标签中的文本信息
print("第一个span标签中的文本信息:",html.xpath('//span/text()')[0])

#(3)提取第二个span标签中的链接
print("第二个span标签中的链接:",html.xpath('//span/a/@href')[0])


执行结果如下图所示:

这里写图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值