scrapy 仅在检查 class 是否退出后才抓取
scrapy scrape only after checking if a class exits
我创建了一个爬虫来爬取网页并将项目存储在 mysql 数据库中。我在抓取网页的固定部分时遇到了一个小问题。我想检查具有特定 class 名称的 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]
由于在提取文本之前要执行测试,因此可以在 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]`
我创建了一个爬虫来爬取网页并将项目存储在 mysql 数据库中。我在抓取网页的固定部分时遇到了一个小问题。我想检查具有特定 class 名称的 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]
由于在提取文本之前要执行测试,因此可以在 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]`