注册 X
我已阅读并同意  服务条款
首页 > IT技术笔记 > 查看笔记

Python爬虫在带有多个属性值的clas:s选择器中选择其中一个值,实现标签快速精准定位

在写爬虫时,定位标签位置获取想要的数据是匹配工作的重点。通过class或id选择器的值(属性值要求在网页中是唯一的)可以很快的实现标签的定位。


<span data-post-id="114214" class=" btn-bluet-bigger href-style vote-post-up   register-user-only "><i class="fa  fa-thumbs-o-up"></i> <h10 id="114214votetotal">1</h10> 赞</span>

然而,在匹配网页标签时,我们经常会碰到选择器class中有多个属性 class=" btn-bluet-bigger href-style vote-post-up   register-user-only ",但是我们只想选择其中的一个值(如vote-post-up,它在网页中是唯一的)来实现标签的精准定位。这个时候有两个办法:


1.笨方法:


不做任何处理,选择整个标签class的属性值(一个都不能少),但是这个方法很多时候没有普适性,很容易出错,而且也代码也看的很乱。----------不建议这样使用,用这个方法,还不如往前找一个父级标签,然后用路径定位到这个标签呢


//*[@class=" btn-bluet-bigger href-style vote-post-up   register-user-only "><i class="fa  fa-thumbs-o-up"]

2.使用contains()方法


从字面意思上理解就是,判断是否包含一个元素,所以定位用来判断的这个元素一定要是唯一的,不然实现不了你想要标签的定位。


用法:contains(你要的属性值如class,class中的每一个值)


//span[contains(@class,'vote-post-up')]

如,上述就是判断span标签中的class是否包含vote-post-up值,如果包含就返回该标签在网页中的位置


有了这个位置之后你在确定后面是取值,还是仍要进一步的往下定位。




 打赏        分享



评论