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开头对应的节点
- //dl[starts-with(@class, "xxxclass")]//a/@href
- //dl[starts-with(@id, "xxxid")]//a/@href
- 包含 xxx 文本/id/class/..