LINUX.ORG.RU

Помогите составить regexp


0

1

Пытаюсь парсить выдачу гугла, получить число найденных страниц. Гугл на запрос http://www.google.ru/#hl=ru&q=ololo выдаёт страницу с участком

Результатов: примерно 1 980 000
который мне и нужно распарсить.

У меня 2 проблемы:

1. Как быть с русскими буквами. Когда я для hl=en делаю

preg_match('@About (.+?)@',$response,$matches);
то
matches[0]
равен «About 1». Т.е. хоть что-то есть, с русскими буквами в UTF8 почему-то это не проходит.

2. Тройки разрядов гугл разделяет эн-бэ-эс-пэ. Как это учесть в регекспе?

Если кто подскажет, буду благодарен!

Может лучше парсить html страницу как xml документ?
В regexp'ах не силен, точнее не совсем понял вопрос.
Но недавно открыл для себя библиотеку jsoup(java) - в ней можно задавать условия выборки как на jquery, хочу сказать что это в 100 раз удобнее чем парсить на regexp'ах

n4ela
()
<?php
$response="Результатов: примерно 1&amp;nbsp;970&amp;nbsp;000";

preg_match('@примерно (?:(\d+)&amp;nbsp;)?(?:(\d+)&amp;nbsp;)?(?:(\d+))?@',$response,$matches);

print $matches[0]." = ".$matches[1].$matches[2].$matches[3];
?>
ddt
()

Поддерживаю предыдущего оратора. Работать со страничками значительно удобнее (и более правильно наверное) именно как с html/xml документами. В python есть BeautifulSoup и lxml, скорее всего для вашего языка программирования тоже есть что-то аналогичное.

AlexKiriukha ★★★★
()
Ответ на: комментарий от ddt

Спасибо, помогло. Буду осваивать регекспы дальше.

liberium
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.