LINUX.ORG.RU

глупая ошабка, Perl


0

0

начал изучать перл. строка с запросом работает нормально только для http://www.google.ru/ и подобное ... а когда добавляется search?q=Perl+book - перестает работать. Укажите на ошибку. Спасибо

print "hello!\n";
use LWP::Simple; # использовать упрощенный интерфейс к LWP
my $page = get 'http://www.google.ru/search?q=Perl+book';
print "-------------\n";
print $page;
print "all is okay!\n";

anonymous

get($url)

The get() function will fetch the document identified by the given URL and return it. It returns undef if it fails. The $url argument can be either a simple string or a reference to a URI object.

You will not be able to examine the response code or response headers (like 'Content-Type') when you are accessing the web using this function. If you need that information you should use the full OO interface (see LWP::UserAgent).

Так что всё у тебя правильно. А то что ошибка выдаётся скрипту так то антиботзащита, которая у гугла как известно меганавороченна. Через UserAgent пробуй c правильной идентификацией клиента.

Anoxemian ★★★★★
()

"глупая ошабка" - это изучать перл.

А результат нулевой, потому что гугель возвращает 403 всяким непонятным юзерагентам.

yk4ever
()

Правильный код:

#! /usr/bin/env python
import urllib

class AppURLopener(urllib.FancyURLopener):
    version = "Firefox/3.0b1"

urllib._urlopener = AppURLopener()

page = urllib.urlopen('http://www.google.ru/search?q=Python+book').read()

print "-----------"
print page
print "all ok"

yk4ever
()
Ответ на: комментарий от Miguel

> Действительно, Перл - глупая ошибка.

Ниасилил, бедолага?

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

use LWP::UserAgent;

local $cookie = '/tmp/incmz.txt';

local $uag = LWP::UserAgent->new( { 'cookie_jar' => $cookie } );
        $uag ->cookie_jar( { file => $cookie, 'autosave' => 1 } );
        $uag ->agent('Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.7.6) Gecko/20050322 Firefox/1.0.2');

local $req = HTTP::Request->new(GET => 'http://www.google.ru/search?q=Perl+book');
          $req ->content_type('application/x-www-form-urlencoded');

local $res = $uag->request($req);


как-то так :-\

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

> на Python выглядит как-то более читабельно.

О_О у тебя как, всё нормально ?

use LWP::UserAgent;

$uag = LWP::UserAgent->new(); $uag ->agent('Mozilla/5.0 Firefox/1.0.2');

$req = HTTP::Request->new(GET => 'http://www.google.ru/search?q=Perl+book'); $res = $uag->request($req);

Так лучше?

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

> а это разве не нарушает условия под которыми гугл предоставляет сервис?

хм...надо почитать.

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

> а это разве не нарушает условия под которыми гугл предоставляет сервис?

я вообще из учебника этот пример взял (intuit.ru), и ещё не один раз видел как пример ... про скачать книгу с перлом.

anonymous
()
Ответ на: комментарий от xTERM

> LWP::Simple очень тормозная библиотека.

Да, но ты заметь, сколько добра миру она принесла. Фильмы, музыка, картинки.

Если тебе нужно по циклу чтото скачать, ты будеш писать 50 строк ?

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

Достаточно один раз написать свою функцию.

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