与Kimono的嵌套API结构

时间:2015-10-24 12:59:17

标签: web-scraping kimono

我想将一个网站转换为使用和服的API,它具有以下结构(我的意思是视觉上,而不是标记 - 视图):

CATEGORY 1:
 Product 1: PRICE
 Product 2: PRICE
 Product 3: PRICE
 ...

CATEGORY 2:
 Product 1: PRICE
 Product 2: PRICE
 Product 3: PRICE
 ...

...等 我希望API能够反映出这种层次结构,所以它会是这样的:

{
  "CATEGORY 1": {
    "Product 1": {
      "price": "$"
    },
    "Product 2": {
      "price": "$"
    },
    "Product 3": {
      "price": "$"
    }
  },
  "CATEGORY 2": {
    "Product 1": {
      "price": "$"
    },
    "Product 2": {
      "price": "$"
    },
    "Product 3": {
      "price": "$"
    }
  }
}

问题是该网站的标记未显示此层次结构(产品未嵌套在类别中):

<h3>CATEGORY 1</h3>
<div class="product">
  <div>
    <div>
    <h4>
      <div>Product 1</div>
    </h4>
    <p>Price</p>
</div>
<div class="product">
  <div>
    <div>
    <h4>
      <div>Product 2</div>
    </h4>
    <p>Price</p>
</div>
<h3>CATEGORY 2</h3>
<div>
  <div>
    <div>
    <h4>
      <div>Product 1</div>
    </h4>
    <p>Price</p>
</div>
<div class="product">
  <div>
    <div>
    <h4>
      <div>Product 2</div>
    </h4>
    <p>Price</p>
</div>

无论我做什么,我总会得到这样的东西:

{
  "collection1": [
    {
      "property1": "Category 1",
      "property4": "Product 1",
      "property5": "price"
    },
    {
      "property1": "Category 2",
      "property4": "Product 1",
      "property5": "price"
    }
  ]
}

有可能实现这个目标吗?

1 个答案:

答案 0 :(得分:2)

如果CSS选择器无法正常工作,那么如果您try regexp for CATEGORY 1, CATEGORY 2可能会这样做 - 在不知道测试页面网址的情况下无法提供更多帮助

此外,您可以尝试将Cat1,Cat2数据放入不同的集合中,并使用 CSS:

...> h3

和regexp for middle part:

CATEGORY 1