python xpath学习总结

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)

猜你喜欢

转载自blog.csdn.net/chenjineng/article/details/80655529
今日推荐