【发布时间】:2017-11-21 15:57:31
【问题描述】:
我正在抓取供应商的网站。该供应商的产品分为类别和子类别。问题是并非所有产品都有子类别,而是所有产品都在类别中。
例如:
category1
product1
product2
product3
subcategory1
product1
product2
如您所见,product3 不在子类别中。它仅在 category1 中,产品 2 和 3 在类别中,但它们也在 subcategory1 中。
我正在开发一个将使用XMLItemExporter 的蜘蛛,并且我希望每个产品只在 XML 中出现一次 - 它是最具体的类别。
所以我想要输出:
product1 - category1>subcategory1
product2 - category1>subcategory1
product3 - category1
我必须遍历类别,因为产品的详细信息url 中没有提及类别,我想了解有关其类别和子类别的信息。
我做不到:
scrape category - scrape all products - scrape subcategory - scrape all products
因为我会将子类别中的产品仅与类别一起抓取,因此 XML 中会有重复项。
您知道如何进行这项工作吗?
编辑:可能的解决方案?不知道我是否可以强制scrapy先抓取一种类型的链接。我是的,我会获取所有子类别的网址,从这些子类别中抓取产品,然后抓取所有类别。如果已经有刮掉的产品,我会跳过它。
【问题讨论】:
-
从你的例子看来,product3 确实有一个与你写的相反的子类别。
-
@mrCarnivore 我不明白。参见示例 - p1,p2,p3 在 category1 中,但如您所见,subcategory1 仅包含 product1 和 product2
-
您的编辑解决了歧义。
标签: python python-2.7 web-scraping scrapy