1

Web ページ全体をシステムにファイルとして保存し、.htmlそのファイルを解析していくつかのタグを見つけて使用しようとしています。

保存/解析http://<url>できますが、保存/解析できませんhttps://<url>。私はパールを使用しています。

次のコードを使用して HTTP を保存していますが、正常に動作しますが、HTTPS では機能しません。

use strict; 
use warnings; 
use LWP::Simple qw($ua get);
use LWP::UserAgent;
use LWP::Protocol::https;
use HTTP::Cookies;

sub main
{
  my $ua = LWP::UserAgent->new();

  my $cookies = HTTP::Cookies->new(
    file => "cookies.txt",
    autosave => 1,
    );
 
  $ua->cookie_jar($cookies);
 
  $ua->agent("Google Chrome/30");
 

#$ua->ssl_opts( SSL_ca_file => 'cert.pfx' );

  $ua->proxy('http','http://proxy.com');
  my $response = $ua->get('http://google.com');

#$ua->credentials($response, "", "usrname", "password");
 
  unless($response->is_success) {
    print "Error: " . $response->status_line;
    }
 
         
    # Let's save the output.
  my $save = "save.html";
 
  unless(open SAVE, '>' . $save) {
    die "nCannot create save file '$save'n";
  }
 
    # Without this line, we may get a
    # 'wide characters in print' warning.
  binmode(SAVE, ":utf8");
 
  print SAVE $response->decoded_content;
 
  close SAVE;
 
  print "Saved ",
      length($response->decoded_content),
      " bytes of data to '$save'.";
}

main();

HTTPS ページを解析することは可能ですか?

4

2 に答える 2

5

使用しているモジュールのドキュメントを常にチェックする価値があります...

libwww-perl のモジュールを使用しています。これにはクックブックが含まれます。そのクックブックには、 HTTPS に関するセクションがあり、次のように書かれています。

https スキームの URL は、LWP 用の SSL インターフェース モジュールが適切にインストールされていれば、http スキームとまったく同じ方法でアクセスできます (詳細については、libwww-perl ディストリビューションにある README.SSL ファイルを参照してください)。LWP が使用する SSL インターフェースがインストールされていない場合、そのような URL にアクセスすると、「501 プロトコル スキーム 'https' はサポートされていません」というエラーが発生します。

README.SSLファイルには次のように書かれています。

libwww-perl v6.02 以降、LWP::Protocol::https モジュールを独自の別のディストリビューションからインストールして、LWP::UserAgent の https://... URL のサポートを有効にする必要があります。

したがって、 LWP::Protocol::httpsをインストールするだけです。

于 2013-10-18T10:04:51.770 に答える