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


Автор: ask 27.5.2006, 21:19
Как блокировать вывод гиперссылки, оставив ее значение?

Вот текст алгоритма:

open F,"abc.txt" or die "Can not open input file ABC.TXT";
open T,">result.txt" or die "Can not open output file RESULT.TXT";
   
while(<F>){
  chomp;
  next if /^$/;
  sleep(1);
  $url=$_;
A:{
  `wget -q -O index.html http://nic.ru/whois/?domain=$url`;
    open FF,"index.html" or die "Can not open file from URL $url";
    $str=join "",<FF>;
    $str =~ s/\&nbsp;//g;
    close FF;
   }

   if($str =~ "free"){
    ($type) = $str =~ /type:\ *(.*)\ *\</;
    ($registrar) = $str =~ /registrar:\ *(.*)\ *\</;
    ($person) = $str =~ /person:\ *(.*)\ *\</;
    ($ns1,$ns2) = $str =~ /nserver:\ *(.*)\ *\<(.*)/;
    ($ns2)= $str =~ /nserver:\ *(.*)\ *\</;
    ($created) = $str =~ /created:\ *(.*)\ *\</;
    ($free) = $str =~ /freeing date(.*)\</;
    ($paid) = $str =~ /paid\-till:\ *(.*)\ *\</;
    $s="$url $registrar\n";
    print "$s";
    print T $s;
    next;
  }
}

вот результат:

accounts.ru <a href="http://www.ripn.net/nic/whois/whois.cgi?RUCENTER-REG-RIPN" target="_blank">RUCENTER-REG-RIPN</a>

а нужен:

accounts.ru RUCENTER-REG-RIPN

 smile 
PS Я не программист, поэтому, кого не затруднит, подскажите как можно доходчивей. (какую команду куда вставить)
  smile   


 

Автор: nitr 28.5.2006, 01:31
регулярные выражения smile в помощь тебе

вот "страшный" скрипт... быстренько написал... доработай и пользуйся в удовольствие:
check.pl
Код
#!/usr/bin/perl -w
use LWP::UserAgent;

my $in_name = $ARGV[0] || die 'Usage: perl check.pl input_file output_file';
my $out_name = $ARGV[1] || die 'Usage: perl check.pl input_file output_file';
my $ua = LWP::UserAgent->new;
open my $in, "<$in_name" or die "Error - $!";
open my $out, ">$out_name" or die "Error - $!";
while(my $url = <$in>) {
  my @cont = split /\n/, $ua->get('http://nic.ru/whois/?domain='.$url)->content;  
  foreach (@cont) {
    $_ =~ s/&nbsp;//g;
    $_ =~ s/<.+?>//g;
    print $out $1." | " if $_ =~ /(domain:.+)/;
    print $out $1." | " if $_ =~ /(type:.+)/;
    print $out $1." | " if $_ =~ /(descr:.+)/;
    print $out $1." | " if $_ =~ /(admin-o:.+)/;
    print $out $1." | " if $_ =~ /(nserver:.+)/;
    print $out $1." | " if $_ =~ /(created:.+)/;
    print $out $1." | " if $_ =~ /(state:.+)/;
    print $out $1." | " if $_ =~ /(changed:.+)/;
    print $out $1." | " if $_ =~ /(mnt-by:.+)/;
    print $out $1." | " if $_ =~ /(source:.+)/;   
  }
  print $out "\n\n";
}
close $out;
close $in;


in_file - in
Код
vingrad.ru
perl.ru


использовал perl ./check.pl in out

out
Цитата
| domain:  VINGRAD.RU | type:   CORPORATE | nserver:  ns9.eurohoster.net. | nserver:  ns2.cm-centre.com. | state:   REGISTERED, DELEGATED | created:  2000.09.13 | source:  TC-RIPN | 

| domain:  PERL.RU | type:   CORPORATE | nserver:  ns1.perl.ru. 195.68.136.2 | nserver:  ns2.perl.ru. 195.42.160.112 | state:   REGISTERED, NOT DELEGATED | created:  1999.10.14 | source:  TC-RIPN |
 


Но именно тебе можно так:
перед выводом 
accounts.ru <a href="http://www.ripn.net/nic/whois/whois.cgi?RUCENTER-REG-RIPN" target="_blank">RUCENTER-REG-RIPN</a>

вставь:
=~ s/<a.+?>(.+)<\/a>/$1/i;  

Автор: ask 28.5.2006, 08:58
Цитата

Но именно тебе можно так:
перед выводом 
accounts.ru <a href="http://www.ripn.net/nic/whois/whois.cgi?RUCENTER-REG-RIPN" target="_blank">RUCENTER-REG-RIPN</a>

вставь:
=~ s/<a.+?>(.+)<\/a>/$1/i;  


Спасибо.
Упражнения со вставкой "перед выводом вставь "=~ s/<a.+?>(.+)<\/a>/$1/i;" приводят к отказу работы проги.
А вот прям в текст можно примером?  smile 
......
($paid) = $str =~ /paid\-till:\ *(.*)\ *\</;
    $s="$url $registrar\n";
    ......
     =~ s/<a.+?>(.+)<\/a>/$1/i;  
    .....
    print "$s";
    print T $s;
......
 smile 
 

Автор: nitr 29.5.2006, 01:16
гггг, только для тебя ;)
Код
...
$s = "$url $registrar\n";
$s =~ s/<a.+?>(.+)<\/a>/$1/i;  
...
 

Автор: ask 29.5.2006, 13:32
Ага, значит прописать эти свойства переменной $s.
Отлично, все работает. 
nitr, Спасибо!
 smile  

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