Форум на Kuban.ru (http://forums.kuban.ru/)
-   Веб-дизайн и программирование (http://forums.kuban.ru/f1030/)
-   -   А по Perl есть спецы? (http://forums.kuban.ru/f1030/po_perl_est-_specy-3491840.html)

Ghost01 29.12.2012 08:56

А по Perl есть спецы?
 
Помогите плиз.
Что нужно в кратце: послать скрипту IP адрес, в ответ получить ссылку на картинку с флагом соотв. страны. Мутить самому с использованием файла соответствий - лениво.
Пишу:
$ua=LWP::UserAgent->new;$ua->agent("MSIE 7.0 ");
$url="http://www.ipcountry.org/index.php?searched_ip=$ip";
$req=HTTP::Request->new(GET =>$url); $req->header('Accept'=>'text/html');$res=$ua->request($req);@res=$res->content;
В @res у меня вся ответная страница. На этой странице есть требуемая картинка. Как мне выпарсить ее оттуда?
Спасибо!

Ghost01 29.12.2012 08:58

А точнее нужно выцепить всё и в таком виде:
I.P address : 1.1.1.1 <br>
Host : 1.1.1.1 <br>
Provider : Provider <br>
Country : [Здесь <img src картинки>] Russian federation. <br>
Country code : RU

kohavasin 29.12.2012 12:09

split
foreach
if()**
...
**

Ghost01 29.12.2012 12:33

(2) @res - HTML страницы целиком. Какой split?
А @res это вообще не массив а чорт знает что.
foreach (@res) ** print $_ ** - один единственный проход у цикла, $_ равна @res.

Гламурный Креведко 29.12.2012 12:35

Регуляркой дёрнуть или в чём вопрос?

Ghost01 29.12.2012 12:51

(4) Я плохо представляю как из этой каши(целая HTML страница) что либо дернуть регуляркой.
Я не прошу готовый код - примерчик бы...
А может в интернете уже есть где такой сервис? Ты ему IP - а он тебе картинку

kohavasin 29.12.2012 21:28

????? ламо?
разбери свой "чорт знает что" на строки и сверяй с шаблонами.

Ghost01 01.01.2013 13:32

(6) Тупой??? Или по выпендриваться надо??
Я в парсинге не бум-бум - так понятно?? Прошу помощи.
А ты не пиши сюда больше.

Ghost01 01.01.2013 13:35

@res - это не массив. Да и с какой стати?? По чему я сплитить буду, по >< ??

biack 04.01.2013 14:18

...
$res=$ua->request($req);
$page=$res->content;
if ($page =~ /img src='flags\/(.+?\.png)'/i) **
$flag_url = "http://www.ipcountry.org/flags/$1";
**

NuH 08.01.2013 10:09

если в парсинге не бум-бум, то лучше юзать сервисы которые отдают данные например в JSON, типа вот этого [url]http://ipinfodb.com/ip_location_api_json.php[/url]
только я про флаги не уверен, но думаю что с флагами есть что-то похожее

суслик 08.01.2013 19:22

а не проще ли использовать Net::Whois::Raw
да и работать быстрее должно, считай обращается к первоисточникам

использовать очень просто, а отпарсить ещё проще:

use Net::Whois::Raw;

my $result=whois('192.168.1.1');


Текущее время: 17:45. Часовой пояс GMT +3.