0
点赞
收藏
分享

微信扫一扫

xpath定位简单应用

草原小黄河 2022-04-24 阅读 52
python

获取字段标签属性(href)

li=tree.xpath("//div[@class='article']//li//a/@href")[0]

在这里插入图片描述

可以看到href在div[@class='article']里面,直接//定位,
//div[@class='article']

第二步接着//定位到li(因为li在第一步定位的第n层,不是在下一层级用/定位不到)
//div[@class='article']//li)

第三步//接着定位a类似第二步想法,最后直接/@href定位属性url(相当于在a的下一层级)
//div[@class='article']//li//a/@href")

(这里其实第二步可以省略直接li=tree.xpath("//div[@class='article']//a/@href")[0]

获取电影名称(肖申克的救赎)

直接定位到电影名称点击右键选择xpath复制(简单易解)如下:
在这里插入图片描述

复制的xpath为
//*[@id="content"]/div/div[1]/ol/li[1]/div/div[2]/div[1]/a/span[1]
然后获取名称直接在span[1]/text()如下
name=tree.xpath('//*[@id="content"]/div/div[1]/ol/li[1]/div/div[2]/div[1]/a/span[1]/text()')
或者直接如下拿到电影名
name=tree.xpath('//div[@class="hd"]//span[1][@class="title"]/text()')[0]

使用xpath定位输出结果为<Element span at 0x15444e01e88>时

可以使用下面方法编码解码,text为输出的参数
text=tree.xpath('//div[1][@class="hd"]//span[1][@class="title"]')[0]
输出为   <Element span at 0x23d72382d88>
content=etree.tostring(text,encoding='utf-8').decode('utf-8') 
输出<span class="title">肖申克的救赎</span>

仅供参考,

import requests
from lxml import etree
url='https://movie.douban.com/top250'
header={
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36 Edg/100.0.1185.44"
}
r=requests.get(url,headers=header)
tree=etree.HTML(r.text)
li=tree.xpath("//div[@class='article']//li//a/@href")[0]
print(li)
name=tree.xpath('//div[@class="hd"]//span[1][@class="title"]/text()')[0]
print(name)
text=tree.xpath('//div[1][@class="hd"]//span[1][@class="title"]')[0]
print(text)
a=etree.tostring(text,encoding='utf-8').decode('utf-8')
print(a)

**

侵权立删

**

举报

相关推荐

0 条评论