关于网络的问题 抓取网页



QUOTE:
原帖由 透明de面具 于 2008-8-1 16:27 发表
https的呀,那估计会有些麻烦吧,需要试试看

我刚才也发现了这个问题  现在连网页下载不了
我这边试,应该是可以

[Copy to clipboard] [ - ]
CODE:
#!/usr/bin/perl
use strict;
use warnings;
use LWP::UserAgent;
use HTTP::Cookies;

use Data::Dumper qw(Dumper);
$Data::Dumper::Indent = 1;

my $user = 'bwscfe';
my $pass = '123456';

my $url = 'https://register.ageofconan.com/account/';
my $ua = LWP::UserAgent->new("keep-alive");
$ua->agent('Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; GreenBrowser)');
$ua->cookie_jar(HTTP::Cookies->new('file'=>'cookie.txt', 'autosave'=>1,));

login();

my $page = get_page($url);

sub login {
        my $response = $ua->post('https://register.ageofconan.com/account/', ['__ac_name'=>$user, '__ac_password'=>$pass]);
        print Dumper($response)."\n";
}

sub get_page {
        my($url) = @_;
        my $response = $ua->get($url);
        return $response->content();
}

需要 perl -MCPAN -e "install Crypt::SSLeay" 如果没有Crypt::SSLeay这个包的话
而这个包需要openssl
所以把openssl 和 Crypt::SSLeay都装好,这个可以跑的通

我测试环境是 "This is perl, v5.8.8 built for MSWin32-x86-multi-thread"

不过从cookie.txt的内容上看,应该是cookie_jar没有起到作用

当修改代码为:

[Copy to clipboard] [ - ]
CODE:
my $page = get_page($url);
if($page =~ /global_logout/) {
        login();
        $page = get_page($url);
}

此时,再次执行这个pl,并没有执行login函数。所以说cookie还是保存下来了?
这个有些糊涂了

晕。
居然是 https,抓包都抓不到。


QUOTE:
原帖由 flw 于 2008-8-1 16:46 发表
晕。
居然是 https,抓包都抓不到。

直接看html,自己拼post就好了~~很省事,不用抓得~~

$ua->cookie_jar(HTTP::Cookies->new('file'=>'cookie.txt', 'autosave'=>1,));
改成这个:
$ua->cookie_jar( {} );
唉 最终这个程序还是没用perl实现 主要是装那几个包实在麻烦 不知道怎么装 最终还是用python实现的
import sys, urllib2, urllib

url = 'https://register.ageofconan.com/account/'
zipcode = "bwsbfv"
data = urllib.urlencode([('__ac_name',zipcode) ,('__ac_password' , '123456')])

req = urllib2.Request(url)
fd = urllib2.urlopen(req, data)

while 1:
    data = fd.read(1024)
    if not len(data):
        break
    sys.stdout.write(data)

10行代码左右 perl还得再练练

https可以用一下curl 如果机器上没有装的话就搞一个php打开curl扩展


QUOTE:
原帖由 bjbs_270 于 2008-8-3 21:23 发表
https可以用一下curl 如果机器上没有装的话就搞一个php打开curl扩展

太麻烦了 现阶段还是python比较拿手 这个程序已经完成了 准备再用perl写一遍 python直接支持https 这点还是很不错的