Извлечь содержимое HTML с помощью YQL? - PullRequest
1 голос
/ 24 октября 2011

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

<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 Ответ

1 голос
/ 07 января 2012

Вот запрос, который является хорошей отправной точкой, использующий таблицу 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%201",
        "content": "Column 1 Text"
       }
      },
      {
       "p": "Column 2 Text"
      },
      {
       "p": "Column 3 Text"
      }
     ]
    },
    {
     "td": [
      {
       "a": {
        "href": "Link%202",
        "content": "Column 1 Text"
       }
      },
      {
       "p": "Column 2 Text"
      },
      {
       "p": "Column 3 Text"
      }
     ]
    }
   ]
  }
 }
}
...