页面解析时,碰到同级li标签,进行部分采集筛选时用到了or和contains方法的结合。


运行环境 Runtime environment

1
2
3
操作系统: Windos10  
IDE: pycharm 2021.3.1 x64
语言: python v3.9.1

html 示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<li>test</li>
<li id="demo">test</li>
<li id="demo" class="pharos_list">test</li>
<li class="pharos_list">test</li>
<li class="pharos_list">test</li>
<li class="pharos_list">test</li>
<li class="pharos_list blue">test</li>
<li class="pharos_list red">test</li>
<li class="pharos_list blue">test</li>
<li class="pharos_list red">test</li>
<li class="pharos_list blue">test</li>
<li class="pharos_list red">test</li>
<li class="pharos_list blue">test</li>
<li class="pharos_list red">test</li>
<li class="pharos_list blue">test</li>

xpath 测试对比

不包含id 和 不包含class

//li[not(@id) and not(@class)]

不包含id 或 不包含 class(即没id也没class的li标签被排除了)

//li[not(@id) or not(@class)]

class中包含blue 或 有id dom属性的li标签

//li[contains(@class, ‘blue’) or (@id)]

总结

非常简单,主要就是了解清楚and和or、not和contains的用法。

网上有部分文章提到xpath了”!=“的用法,但是我在自己实际测试中没有成功。