Forum Webscript.Ru
Программирование => Perl => Тема начата: DeltaSoft от 07 Сентября 2006, 12:34:41
-
Задачка такая:
Есть 10000 запросов нужно собрирать каждый день по каждому запросу первые 20 адресов сайтов, которые выдает поисковик (Google, Yandex ...).
Закидывать всю инфу в БД, так чтобы потом к ней можно было пределать хороший интерфейс.
Накидайте плиз как подобные вещи лучше делать...
-
заказываете у профессионального программиста.
-
получите в лоб и от поисковиков и от хостера
слишком много запросов, читайте правила поисковиков
-
google разрешает в день 1000 запросов через свой апи,
а 10000 запросов яндекс не завалят.
про хостеров ничего не сказано.
-
google разрешает в день 1000 запросов через свой апи,
возможно
итого 10000 / 1000 = 10 ip (это если не делать повторных запросов в случае неудачи)
а 10000 запросов яндекс не завалят.
разрешено до 200 запросов в сутки,
если сильно превысить, обратят внимание
про хостеров ничего не сказано.
конечно,
но хостер тоже в лоб получит ; )
-
гугл не по ип определяет, а по ключу.
а из-за ната людям как быть?
и, как я понял, 10000 размазны по поисковикам.
-
гугл не по ип определяет, а по ключу.
?
а из-за ната людям как быть?
если ты имеешь в виду организации с единым внешним ip,
то там нет никакой систематики.
т.е. вычислить робот это или нет не так сложно
и, как я понял, 10000 размазны по поисковикам.
имхо: всё равно много
-
надо зарегистрироваться на гугле, он выдаст ключь, по которому происходит доступ череь апи к запросам.
вычисления робот/человек по мне так достаточно сложно в данном случае.
-
Господа,
и у гугля, и у Яндекса максимальный бесплатный лимит - 1000 q/d. "Платного" у гугля нет вообще.
Таким образом, задача лицензированными средствами не решаема.
[moderatorial]
Внимательно слежу за этой темой, поскольку есть "душок" серого SEO.
-
вообще должно сработать...
use Socket;
my $term_escaped = $ARGV[0];
my $proto = getprotobyname(\'tcp\');
my $host = "www.google.ru";
my $port = 80;
my $request = sprintf("GET /search?q=%s HTTP/1.1
Accept: */*
AcceptCharset: *
Accept-Language: ru
Host: $host
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Proxy-Connection: Keep-Alive
", $term_escaped);
socket(SOCK, PF_INET, SOCK_STREAM, $proto);
my $iaddr = gethostbyname($host);
my $paddr = sockaddr_in($port, $iaddr);
connect(SOCK, $paddr);
my $old_fh = select(SOCK);
$| = 1;
select($old_fh);
print SOCK $request;
while(){
push(@results, $1) if /.*<\\/a>.*/;
# my @results = ;
}
my $i = 1; my $max = 5;
while ($i <= $max) {
printf("%s" ,$results[$i]));
$i++;
}
-
нарвешься на Transfer-Encoding: chunked
смени HTTP/1.1 --> HTTP/1.0 либо обрабатывай принятое согласно версии протокола
ссылки по теме
perldoc strict;
perldoc warnings;
perldoc LWP
perldoc LWP::Simple
perldoc IO::Socket;
perldoc HTTP::Headers;
perldoc Stream::Reader;
-
ondr:
нарвешься на Transfer-Encoding: chunked
смени HTTP/1.1 --> HTTP/1.0 либо обрабатывай принятое согласно версии протокола
это был лишь пример, программировать правильные вещи поверьте я умею.
вместе с модулями я бы еще посоветовал http://rfc.net/rfc2616.html
-
[OFF]весь флейм из данной переехал в профильный форум (http://forums.webscript.ru/showthread.php?s=&postid=144895) . где его и можно будет продолжить[/OFF]