CGI...perl ... помогите...вроде всё просто.....

killraty
На сайте с 27.09.2004
Offline
100
645

вот такой код.... выдирает список слов из статистики рамблера...

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

хелпните ?

use LWP::Simple;

$slov="Овца";

$url="http://adstat.rambler.ru/wrds/wrds.pl?date=0509&words=$slov&morph=&page=0";

print "Content-type: text/html\n\n";

$content = get($url);

open (HTML,">foo.txt") || die "Can't Open file!\n";

print HTML "$content \n";

close (HTML);

use HTML::TokeParser;

$p = HTML::TokeParser->new(shift||"foo.txt");

while (my $token = $p->get_tag("a")) {

my $url = $token->[1]{href} || "-";

my $text = $p->get_trimmed_text("/a");

# print "$url\t$text <br>\n";

if ($text=~/.*$slov.*/i) {push(@array2, $text); }

#@array2 = split (\n, $text);

}

print "$slov <br>\n";

print @array2;

нет подписи
L
На сайте с 06.09.2001
Offline
67
#1

подключить что-нибудь типа

use POSIX qw(locale_h);

setlocale(LC_CTYPE, 'ru');

попробуйте

TrafficHolder.com - Buy/Sell Adult Traffic (http://www.trafficholder.com/aff.php?samuelapirrone)
euhenio
На сайте с 21.09.2001
Offline
357
#2

На русском - надо использовать urlencode, превращающий русские буквы в %NN.

Есит такой модуль и есть кусочек кода, делающий это.

с ув., Евгений Трофименко seo блог Trofimenko.ru ( http://trofimenko.ru/ ) но ыыы мало обновляется... Tools.Promosite.ru - анализатор апдейтов Яндекса (пожертвуйте лимиты на Яндекс.XML! ( https://searchengines.guru/ru/forum/801888/page7#comment_11942489 )) Konvr.ru - увеличение конверсии сайта на 81% за 4 недели ( http://konvr.ru/ )
beroot
На сайте с 08.06.2004
Offline
124
#3

Что-то я сомневаюсь что этот код рабочий.

Там вроде реферер обязательно нужен, иначе рамблер глупости какие-то отдает.

У меня на php через сокеты, это выглядит так:

----------------

function conect_to_rambler($quer,$page,$mount,$p_port,$p_host,$proxylogin,$proxypass)

{

$len=strlen("http://adstat.rambler.ru/wrds/?date=05$mount&words=$quer&morph=&page=$page");

$s = "GET http://adstat.rambler.ru/wrds/?date=05$mount&words=$quer&morph=&page=$page HTTP/1.0\r\n";

$s .= "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*

Accept-Language: ru

Content-Type: application/x-www-form-urlencoded

Proxy-Connection: Keep-Alive

User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90)

Content-Length: $len

Pragma: no-cache

Proxy-Authorization: Basic ".base64_encode($proxylogin.":".$proxypass)."

Referer: http://adstat.rambler.ru/wrds/

http://adstat.rambler.ru/wrds/?date=05$mount&words=$quer&morph=&page=$page";

if ($fp = @fsockopen($p_host, $p_port, $err_n, $err_s, 30))

{

@fputs($fp, $s);

$work_str="";

while (!(@feof($fp))) $work_str.=@fgets($fp,100000);

@fclose($fp);

}

return $work_str;

}

------------------------

$quer - запрос

$page - страница которую смотреть

$mount - месяц (01,02,03,.. сентябрь 09)

$p_port - порт прокси

$p_host - ип прокси

$proxylogin - логин прокси

$proxypass - пароль прокси

запрос пихается сначало в эту ф-ю:

---------

function translate_new($text1) {

$search = array ("' '","'#'","'='","'\"'");

$replace = array ("+","%23","%3D","%22");

$text1 = @preg_replace($search, $replace, $text1);

return $text1;

}

------

euhenio
На сайте с 21.09.2001
Offline
357
#4

beroot, ну вроде если вбить прямо в адресную строку http://adstat.rambler.ru/wrds/wrds.pl?date=0509&words=хуй&morph=&page=0 - (без рефа, понятно) - все нормально отдаст.

beroot
На сайте с 08.06.2004
Offline
124
#5

euhenio, ты прав, похоже убрали, но одно время стояла такая проверка точно.

D
На сайте с 10.10.2005
Offline
28
#6

Лучше использовать обычный LWP

Для кодировки русского текста используй

$key=~ s/([^\$])/uc sprintf("%%%02x",ord($1))/eg

для раскодировки

$key=~s/%([0-9a-hA-H]{2})/pack('C',hex($1))/ge;

Я не SEO я программист PERL (Apache 1.3.37 + mod_perl)!!!!! А ещё я люблю FastCGI
killraty
На сайте с 27.09.2004
Offline
100
#7
djkostya:
Лучше использовать обычный LWP

Для кодировки русского текста используй

$key=~ s/([^\$])/uc sprintf("%%%02x",ord($1))/eg


для раскодировки


$key=~s/%([0-9a-hA-H]{2})/pack('C',hex($1))/ge;

всем спасибо за помощь разобрался ....!!!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий