Как использовать несколько селекторов xpath в запросе YQL - PullRequest
5 голосов
/ 13 октября 2010

Эй, я бы хотел почистить некоторые данные из моего блога, используя YQL:

SELECT * FROM html WHERE url="http://site.com/blog" AND xpath="//div[@class='post']"

Как я могу использовать разные биты xpath в своем запросе? Например. могу ли я сделать что-то вроде:

SELECT * FROM html WHERE url="http://site.com/blog" AND xpath="//div[@class='post']" AND xpath ="//div[@class='title']"

при условии, что я хочу получить пост и заголовок? Я думаю, что я мог бы взять весь HTML, но я бы предпочел только то, что мне нужно, так как скорость здесь является проблемой.

Если у меня есть HTML-код, который я хочу извлечь из разметки, можно ли использовать для этого регулярные выражения PHP?

Я также понимаю, что вы можете использовать синтаксис CSS, если у вас есть опыт использования этого с YQL и вы могли бы подсказать мне, как можно написать запрос, аналогичный приведенному выше, но в CSS, а не в XPATH, я был бы благодарен! *

Спасибо.

Ответы [ 3 ]

11 голосов
/ 25 октября 2010

Относительно CSS:

См. Сам сайт YQL для этого.Поищите в Google YQL и CSS (я могу опубликовать здесь только одну ссылку, а вторая - более полезная.)

Пример, который у них есть, на самом деле больше не работает, но вы можете попробовать этот пример, который разбираетвопросы с главной страницы stackoverflow.

Пример YQL

Множественный выбор одним XPATH:

Вы МОЖЕТЕ сделать этонепосредственно с синтаксисом xpath.например,

SELECT * FROM html WHERE url="www.asscompact.de" and xpath="//head/meta[@name='title']|//head/meta[@name='description']|//head/meta[@name='keywords']"
0 голосов
/ 18 июля 2016

Вы также можете написать несколько вариантов XPATH, например:

SELECT * FROM html WHERE url="www.asscompact.de" and xpath="//head/meta[@name='title' or @name='description']"
0 голосов
/ 13 октября 2010

Это невозможно. Вам нужно выполнить этот запрос дважды. Первый раз для первого xpath и второй раз для второго xpath. Конечно, вы можете написать собственную декларацию open table и предоставить поддержку для запросов такого типа.

...