我创建了一个抓取工具来抓取网页并将项目存储在mysql数据库中。我在抓取网页的固定部分时遇到了一个小问题。我想检查一个具有某个类名的div是否在div内部退出,如果它退出,我将存储根div。
<div class="page-col-1-2-right">
<div class="block">
<h2>Produktbewertung und Test</h2>
<div class="area spacing ingredient-rating"></div>
</div>
<div class="block">
<h2>Artikel zu Nasentropfen & Schnupfen</h2>
<div class="cell clickable teaser-large" data-id="62151"></div>
<div>
</div>
在上面的代码中,我想要div块,当且仅当它有
时<div class="area spacing ingredient-rating"></div>
在里面。由于我抓取的网站的某些页面可能有或没有所需的块,因此我的代码无法正常工作。
response.xpath('//div[contains(@class, "page-col-1-2-right")]/div[contains(@class, "block")][2]').extract()[0]
答案 0 :(得分:1)
由于您在提取文本之前要执行测试,因此可以在xpath中使用and
表达式。所以它将是response.xpath(test1 and test2).extract()[0]
将它应用于您的代码:
response.xpath('//div[contains(@class, "page-col-1-2-right")]/div[contains(@class, "block")][2]' and '//div[contains(@class, "ingredient-rating")]').extract()[0]`