如何用单个选择器选取指定同级元素?Scrapy爬取节点提取问题
用单个XPath选择器获取Type4元素
这问题我熟!要精准定位到所有Type4的<li>元素,咱们可以利用XPath的兄弟节点定位特性,刚好你的结构里有个固定的标记点——<li class="a">Titles Type3</li>,它就是Type4元素的前置锚点。
直接用这个单个选择器就行:
//li[preceding-sibling::li[@class='a' and text()='Titles Type3'] and @class='c']
选择器逻辑拆解:
preceding-sibling::li[@class='a' and text()='Titles Type3']:筛选出**前面存在一个class为a且文本是Titles Type3的兄弟<li>**的元素,这一步把Type2的那些class="c"的li排除了,因为它们的前置锚点是Type1的那个li,不是Type3的。and @class='c':再加上这个条件,确保我们选到的是Type4对应的class="c"的li元素。
在Scrapy里使用的话,代码大概是这样:
# 假设response是你的响应对象 type4_items = response.xpath("//li[preceding-sibling::li[@class='a' and text()='Titles Type3'] and @class='c']/text()").getall()
这样不管Type2和Type4的数量怎么变,只要Type3的那个li是固定存在的,就能准确拿到所有Type4的内容啦。
内容的提问来源于stack exchange,提问作者EdelBrocken
相关产品推荐
相关产品推荐

