这是HTML的样子:
<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开始新部分之外,类别与品牌部分之间没有区别特征。此外,还有许多类别和品牌,因此很难对其进行硬编码。
答案 0 :(得分:3)
您可以使用following
或following-sibling
轴。
例如,为了获得品牌,您可以按文字获取所需的h4
元素,然后通过ul
转到下一个following-sibling
兄弟:
//h4[. = 'Brands']/following-sibling::ul[1]/li/text()
来自Scrapy shell的演示:
$ scrapy shell ./index.html
>>> response.xpath("//h4[. = 'Brands']/following-sibling::ul[1]/li/text()").extract()
['Audi', 'BMW', 'Mercedes']