Извлечение содержимого HTML с помощью YQL?

#javascript #json #yahoo #yql

#javascript #json #yahoo #yql

Вопрос:

Допустим, я хочу извлечь данные с веб-страницы со следующей разметкой:

 <table>
  <tr>
    <td><a href="Link 1">Column 1 Text</a></td>
    <td>Column 2 Text</td>
    <td>Column 3 Text</td>
  </tr>
  <tr>
    <td><a href="Link 2">Column 1 Text</a></td>
    <td>Column 2 Text</td>
    <td>Column 3 Text</td>
  </tr>
  ...
</table>
  

в формат JSON :

 [
  {
    link: 'Link 1',
    text: 'Column 1 Text',
    data: 'Column 3 Text'
  },
  {
    link: 'Link 2',
    text: 'Column 1 Text',
    data: 'Column 3 Text'
  }
]
  

Можем ли мы сделать это с помощью YQL? Если да, то, пожалуйста, приведите мне пример запроса.

Любая помощь будет оценена!

Ответ №1:

Вот запрос, который является хорошей отправной точкой, используя таблицу HTML вместе с некоторым запросом XPath (подробнее об этом методе см. Раздел Извлечение содержимого HTML с помощью XPath):

select * from html where url="http://cantoni.org/test/table.html" and xpath='//table/tr'

Который выдает результаты JSON, подобные этому:

 {
 "query": {
  "count": 2,
  "created": "2012-01-06T20:16:46Z",
  "lang": "en-US",
  "results": {
   "tr": [
    {
     "td": [
      {
       "a": {
        "href": "Link 1",
        "content": "Column 1 Text"
       }
      },
      {
       "p": "Column 2 Text"
      },
      {
       "p": "Column 3 Text"
      }
     ]
    },
    {
     "td": [
      {
       "a": {
        "href": "Link 2",
        "content": "Column 1 Text"
       }
      },
      {
       "p": "Column 2 Text"
      },
      {
       "p": "Column 3 Text"
      }
     ]
    }
   ]
  }
 }
}