为什么YQL会返回其他标签?

时间:2014-08-25 13:55:48

标签: html json xpath yql

我在YQL控制台中使用以下内容进行查询:

select * from html
where url='http://www.motorni-masla.net/index.php?main_page=product_oil_info&cPath=140&products_id=294&zenid=c8281021bbfed454176247900b3b9d4a'
and xpath='//*[@id="productPrices"]'

idiea是找出id为" productPrices"的元素。并以JSON格式返回它的内容。

但是当我这样做时 - 结果与原始代码不同 - 还有其他标签。

原创内容:

<strong>
<h2 id="productPrices" class="productGeneral">
<span class="normalprice">14.00лв. </span>&nbsp;<span class="productSpecialPrice">11.00лв.</span><span class="productPriceDiscount">
<br>Спести:&nbsp;21% отстъпка</span>
</h2>
</strong>

YQL结果:

{
   "h2": {
    "class": "productGeneral",
    "id": "productPrices",
    "strong": {
     "span": [
      {
       "class": "normalprice",
       "content": "14.00лв."
      },
      {
       "class": "productSpecialPrice",
       "content": "11.00лв."
      },
      {
       "class": "productPriceDiscount",
       "br": null,
       "content": "\nСпести: 21% отстъпка"
      }
     ],
     "content": "  "
    }

基本上在原始内容中 - 顺序是:     strong -> h2 -> span 在YQL结果中它是:     h2 -> strong -> span

这使XPATH我没用,因为我无法在YQL语句中使用它 - 它不适合YQL获得的结果。 在另一种情况下,不仅顺序不同,而且从现在开始添加了<p>标记。

如果有人告诉我这里发生了什么,我将非常感激。

1 个答案:

答案 0 :(得分:0)

页面的标记无效。显然,YQL的解析器正在做一件事来修复它,而浏览器(或者至少我的Chrome版本以及显然你正在使用的任何浏览器)正在做一些不同的事情来修复它。

无效位是您无法将h2置于strong内。 strong的内容模型是短语内容,但h2不能输入短语内容,只能输入流内容。