首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >只在某个元素之后和之前开始刮擦。

只在某个元素之后和之前开始刮擦。
EN

Stack Overflow用户
提问于 2018-06-19 01:00:02
回答 1查看 30关注 0票数 0

下面是HTML的样子:

代码语言:javascript
运行
复制
<h4>Categories</h4>
<ul>
    <li>Cars</li>
    <li>Bikes</li>
    <li>Planes</li>
</ul>

<h4>Brands</h4>
<ul>
    <li>Audi</li>
    <li>BMW</li>
    <li>Mercedes</li>
</ul>

<h4>FAQ</h4>
<ul>
    <li>FAQ1</li>
    <li>FAQ2</li>
    <li>FAQ3</li>
</ul>

我只想用Scrapy提取品牌。除了H4开始新的部分外,品类与品牌之间没有区别的特性。此外,有许多类别和品牌,所以很难硬编码它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-19 01:24:05

您可以使用followingfollowing-sibling轴。

例如,为了获得品牌,您可以通过文本获得所需的h4元素,然后通过following-sibling获得下一个ul兄弟。

代码语言:javascript
运行
复制
//h4[. = 'Brands']/following-sibling::ul[1]/li/text()

来自Scrapy外壳的演示:

代码语言:javascript
运行
复制
$ scrapy shell ./index.html
>>> response.xpath("//h4[. = 'Brands']/following-sibling::ul[1]/li/text()").extract()
['Audi', 'BMW', 'Mercedes']
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50919287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档