Как использовать несколько селекторов xpath в запросе YQL
Эй, я хотел бы почистить некоторые данные из своего блога с помощью 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 answers
Что касается CSS:
Смотрите для этого сам веб-сайт YQL. Поищите в Google YQL и CSS (я могу разместить здесь только одну ссылку, а вторая более полезна.)
Пример, который у них есть, на самом деле больше не работает, но вы можете попробовать этот пример, который удаляет вопросы с первой страницы stackoverflow.
Несколько вариантов выбора с одним XPATH:
Вы МОЖЕТЕ сделать это напрямую с помощью синтаксиса xpath. например,
SELECT * FROM html WHERE url="www.asscompact.de" and xpath="//head/meta[@name='title']|//head/meta[@name='description']|//head/meta[@name='keywords']"
Вы также можете написать несколько вариантов XPATH, подобных этому:
SELECT * FROM html WHERE url="www.asscompact.de" and xpath="//head/meta[@name='title' or @name='description']"
Это невозможно. Вам нужно выполнить этот запрос дважды. Первый раз для первого xpath и второй раз для второго xpath. Конечно, вы можете написать свое собственное объявление открытой таблицы и обеспечить поддержку такого рода запросов.