Python xpath学习总结

本文总结了Python中利用lxml库的etree方法处理网页数据并运用xpath进行解析的经验。介绍了绝对路径和相对路径的使用,如通过谷歌浏览器获取XPath路径。还探讨了如何获取元素属性、文本,以及利用特定条件筛选节点,如`starts-with`、`contains`函数,并提供了遍历节点列表及在webdriver中执行点击事件的例子。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

xpath解析网页,需要先将请求返回的网页数据进行处理,这一步需要用到lxml库的etree方法

import requests
from lxml import etree

r = requests.get('https://nba.hupu.com/')
html = etree.HTML(r.text)
result = html.xpath('//dl[@class="nba-news-list"]//a/text()')

 

xpath获取有绝对路径获取(一层一层往下找,必须编写完整),相对路径获取(全局搜索)

/ 代表绝对路径

// 代表相对路径

绝对路径: /html/body/div[4]/div[1]/div[1]/div[2]/dl/dd[1]/a[1],看着就怕,谷歌浏览器自带获取xpath路径

在网页中点击鼠标右键-检查-选取页面元素-右键选中的标签-Copy-Copy XPath

相对路径 //dl[@class="nba-news-list"]//a/@href

 

获取属性 a/@href 

获取文本 a/text()

 

其他用法

  • 以xxxclass xxxid开头对应的节点
  1. //dl[starts-with(@class, "xxxclass")]//a/@href
  2. //dl[starts-with(@id, "xxxid")]//a/@href

 

  • 包含 xxx 文本/id/class/... 对应的节点
  1. //a[contains(text(), "xxx")]/@href
  2. //a[contains(@class, "xxx")]/@href
  3.  //a[contains(@name, "xxx")]/@href

 

遍历获取的节点列表

 html = etree.HTML(html)
 result= html.xpath('//li')
 
 for i in html_data:
     print(i.xpath('./a/text()')[0])

. 代表当前节点

.. 代表当前节点的父节点

 

webdriver遍历执行点击事件(举例)

for i in range(10):
	express = '//div[@class="selectric-scroll"]//li[' + str(i+1) + ']'
	so.driver.find_element_by_xpath(express).click()
	time.sleep(1)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值