Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
perl使用lwp或www::mechanize获取网站的ip_Perl_Ip_Web Crawler_Www Mechanize_Lwp - Fatal编程技术网

perl使用lwp或www::mechanize获取网站的ip

perl使用lwp或www::mechanize获取网站的ip,perl,ip,web-crawler,www-mechanize,lwp,Perl,Ip,Web Crawler,Www Mechanize,Lwp,所以我正在开发一个爬虫程序,我想要存储的关于我爬网的站点的一些数据是它们的IP地址。我更愿意这样做,而不必再次点击他们的服务器,因此,在您已经请求该网页后,是否仍然可以从LWP或WWW::Mechanize获取此信息?例如: my $mech = WWW::Mechanize->new(); $mech->get($url); $ip = $mech->url_ip; 我查阅了LWP和WWW::Mechanize的文档,似乎什么也找不到,但是我以前错过了一些东西。那么,有人知

所以我正在开发一个爬虫程序,我想要存储的关于我爬网的站点的一些数据是它们的IP地址。我更愿意这样做,而不必再次点击他们的服务器,因此,在您已经请求该网页后,是否仍然可以从LWP或WWW::Mechanize获取此信息?例如:

my $mech = WWW::Mechanize->new();
$mech->get($url);
$ip = $mech->url_ip;
我查阅了LWP和WWW::Mechanize的文档,似乎什么也找不到,但是我以前错过了一些东西。那么,有人知道用这些模块中的一个实现这一点的方法吗?或者其他类似的模块也能做到?谢谢你的帮助

使用。下面是一个简单的例子:

my $resolver = Net::DNS::Resolver->new();
my $response = $Resolver->send("example.com", "A");
my @rr = grep { $_->type eq "A" } $response->answer;
my $ip = $rr[0]->address;
如果只是要存储任意(四元)A记录,您也可以尝试以下方法:

use strictures;
use Perl6::Take qw(gather take);
use Socket 1.96 qw(getaddrinfo getnameinfo AF_INET6 AF_INET SOCK_STREAM NI_NUMERICHOST NIx_NOSERV);
# require 1.96 or better for NIx_NOSERV, ships with Perl 5.14
⋮
my $host = $mech->url->host;
my @ip = gather {
    for my $family (AF_INET6, AF_INET) {
        my ($err, @addrinfo) = getaddrinfo($host, 'http', { family => $family, socktype => SOCK_STREAM });
        warn "Cannot getaddrinfo - $err" if $err;
        for my $ai (@addrinfo) {
            my ($err, $ipaddr) = getnameinfo($ai->{addr}, NI_NUMERICHOST, NIx_NOSERV);
            warn "Cannot getnameinfo - $err" if $err;
            take $ipaddr;
        }
    };
};

最初的快速脏方法:
join(“.”,unpack(“W4”,scalar gethostbyname“stackoverflow.com”)