Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Как лучше парсить ответы Google?


Автор: Гость_Alex 12.5.2005, 14:49
Привет всем!

У меня тут возник вопрос. Дело в том, что при попытке получить гиперссылки из страницы-ответа Google, вместо ожидаемых "нормальных" гиперссылок ну типа там: www.some.com/zzz.htm, я получил ссылки вроде
http://66.102.9.104/search?q=cache:hevADNKLndsJ:bash.com.ua/culture.html+%D0%91%D0%B5%D1%80%D0%B5%D0%B7%D0%BA%D0%BE+%D1%81%D1%82%D1%83%D0%B4%D0%B5%D0%BD%D1%82&hl=uk

smile

получал я ети ссылки так:
Код

my @links;
$content =~ s/href\=\"(http:\/\/.*?)\"/push( @links, $1 )/eg;


Подскажите пожалуйста, нет ли возможности получить "нормальние" ссылки из того же Google'овского документа и как ето лучше сделать?

Заранее благодарен.

Автор: sergejzr 12.5.2005, 14:55
Не думаю, что это легально....

Автор: Гость_Alex 12.5.2005, 15:14
А что тут может быть нелегального? Мне кажется, так работают все метапоисковые системы, и парсят они ответы не только Google.

Автор: sergejzr 12.5.2005, 15:15
Насколько я знаю, для того чтобы использовать гуглевские результаты надо к разработчикам сперва обращаться... Посмотрим, что люди скажут..

Автор: Chuck 12.5.2005, 15:44
Думаю, через месять парсинга, они просто забанят твой IP

Автор: Anarki 12.5.2005, 23:04
Вроде есть у них специальная система, они выдают какие-то idшники, ты формируешь запрос, тебе выдаётся результат в удобном виде, раньше эта услуга была бесплатной вроде. За дополнительной информацией в гугл.

Автор: aleksnn 13.5.2005, 01:57
Убери " поставь в конце >
Код

my @links;
$content =~ s/href\=\(http:\/\/.*?)>/push( @links, $1 )/eg;

Где-то так.

Или сюда http://forum.vingrad.ru/index.php?showtopic=27451 для кого писал? smile

Автор: Гость_Дима 23.10.2005, 00:38
Google's API Google сделал API для доступа к результатам поиска . Если в двух словах, то это легальная возможность задавать до 1000 автоматических запросов в день через их API, и получать данные в структурированном виде.

Автор: Гость_Дима 23.10.2005, 00:39
еще ссылки http://rene.com.ru/razdel21/x2289.htm на Google Api

пли если вручную парсить Гуглю:

if ($this->name == "google" ) {
preg_match_all('/href=(\'|\")http:\/\/(\S*)(\"|\')/', $response, $page_links, PREG_PATTERN_ORDER);

// î÷èùàåì îò âñÿêîãî õëàìà
foreach( $page_links[2] as $page_link ){
if ( !preg_match("/(google|q=cache:|q=related:)/i", $page_link) ){
// çàïèñûâàåì
$this->ret_links = array_merge($this->ret_links, $page_link);
}
}

}

Автор: DeadSoul 23.10.2005, 12:01
Гость_Alex, гугл дает не прямые ссылки, а что-то воде www.google.com\redirect?парам-пам. Это делается для более точного определение "того что ты ищешь и где в итоге ты это нашел"

Автор: ochnev 4.7.2007, 02:20
"Легальный" способ парсить выдачу Google - это через Google API. Там надо где-то регистриться и получать ID, который через этот API показывать.
Метапоисковые системы только так и работают, иначе их бы всех быстро забанили.

Можно парсить и "нелегально". Для этого надо делать random паузу между запросами к страницам (2-8 секунд) и обязательно делать паузу не менее минуты (или пол-минуты - не помню) между десятками страниц.

Может быть, там что-то поменялось с тех пор, но у меня не было такой проблемы, что вместо ожидаемых "нормальных" гиперссылок было что-то левое.

Автор: Zukoff 4.7.2007, 14:43
HTTP::Parse && URI::URL
а регекспами парсят урлы и особенно хтмл только... отчаянные

Автор: sharq 4.7.2007, 17:21
Zukoff

Цитата(Zukoff @  4.7.2007,  15:43 Найти цитируемый пост)
отчаянные 


вот это ты пошутил smile

Цитата(Zukoff @  4.7.2007,  15:43 Найти цитируемый пост)
а регекспами парсят урлы и особенно хтмл только...

те, кто знает в них толк и не использует Perl как PHP. smile
На самом деле, если не знаешь рег.эксп.ы, то лучше в них разобраться, т.к. без них никуда!
Использовать вспомогательные модули - это уже последнее дело.

Хотя дело каждого - использовать готовое или написать самому!

 smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)