#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"
}
]
}
]
}
}
}