Scrapy:遍历子类别

时间:2017-11-21 15:57:31

标签: python python-2.7 web-scraping scrapy

我在抓一个供应商的网站。该供应商的产品分为类别和子类别。问题是并非所有产品都有子类别,但所有产品都属于类别。

例如:

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在另一个之前刮掉一种类型的链接。我是的,我会得到所有子类别的网址,从这些子类别中抓取产品然后刮掉所有类别。如果已经有产品,我会跳过它。

1 个答案:

答案 0 :(得分:0)

我会分三步实现:

  1. 第一步是建立一个完整的商品网址列表,其中包含相应的类别和子类别。

  2. 然后我会在此列表中实现一些逻辑,以确保只使用最具体(即最深)的类别。

  3. 然后,清理过的URL列表将被送到第二步刮刀,这将刮掉实际的商品数据。

  4. 比编码更多的策略,但希望它有所帮助。

    总结:抓取 - >干净 - >刮