• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:外部サイトの内容の取得)

外部サイトの内容の取得がうまくいかない理由

このQ&Aのポイント
  • 対象サイトの内容を取得するためのCGI構築に苦戦しています。
  • 対象サイトがJavaScript中心で構成されていることが原因かもしれません。
  • 原因がわかる方からの助言をお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ryu_chan
  • ベストアンサー率37% (69/186)
回答No.3

補足の内容を見ていると、No.2さんがおっしゃるように、ブラウザが文字コード判別を失敗しているようにも思えますね。 UTF-8の文字列をShift-JISとして表示すると、補足にあるような文字化けが起きます。 ブラウザから手動で文字コードを選んでみるとわかるかもしれません。 ところで、LWP::Simple::getは最近仕様が変わり、文字コードを判別して、Perl内部表現文字列を返すようになってますね。 Perl内部表現はutf8なので、補足にあるような文字化けから推測して、質問者さんが利用しているLWP::Simple::getが、Perl内部表現文字列を返してる可能性はありますね。 その場合、print文等で外部に出力するときはencode関数を用いて適切な文字コードに変換してから出力する必要があります。 use Encode; $html = encode("cp932", $html); # ここでは、cp932(≒Shift-JIS)に変換 print "Content-type: text/html\n\n$html\n"; 従来のバイト文字列を返すLWP::Simple::getの場合でも、(必要であれば)適切な文字コードの変換をしてください。 use Encode; Encode::from_to($html, "utf8" => "cp932"); # ここでは、utf8 => cp932に変換 従来仕様のバイト文字列を取得したいのであれば、以下のようにLWP::UserAgentを利用すればいいと思います。 use LWP; my $res = LWP::UserAgent->new->get("http://jun.sakura.ne.jp/~dk3/result/result225.html"); if( $res->is_error ) { print "Content-type: text/html\n\n"; print $res->status_line; exit; } my $html = $res->content; #相対指定部分の置換 $mae = '\.\./'; $ato = 'http://jun.sakura.ne.jp/~dk3/'; $html =~ s|$mae|$ato|g; print "Content-type: text/html\n\n$html\n";

png_network
質問者

お礼

ご回答ありがとうございます! 詳しいことは分からないのですが 仕様の変更等があり出来なくなっていた…ということでしょうか。 ご提示いただいたもので試したところ、うまくいきました! 急いでいたものでとても助かりました!本当にありがとうございます!

その他の回答 (2)

  • ssk38
  • ベストアンサー率44% (22/49)
回答No.2

なんとなく、ブラウザの表示する文字コードの問題をいっている気がしますが、 情報が足りません。 どういう処理があるのか説明していただかないと どこでつまづきそうか、どうやったら原因究明ができるか、といったことが 答えようがないですよね。 - 処理概要(ここで必要な情報をできるだけいれる) - 上記処理のここでこううまくいかない(上記処理概要に基づいて記述) を書いてください。

png_network
質問者

補足

Perlの例文を真似て書くようなレベルのため 知識をお借りしたく投稿しました。 回答に至れない程の拙い投稿、失礼いたしました。

  • ssk38
  • ベストアンサー率44% (22/49)
回答No.1

なにがどううまくいかなかったのか、どこにも書いてありませんよ。 なので誰も答えられないのでは。 JavascriptでURLを構成していたら、基本的に難しいと思いますが、 それ以外の場合なら、置換等で頑張ればできるかもしれないですね。

png_network
質問者

補足

ご指摘感謝いたします。 スタイルシート等は置換により正常に読み込みできるのですが 対象サイトの内容が正常に表示されず、ただ 繧ソ繧、繝医Ν縺ォ謌サ繧・/a> と表示されてしまいます。

関連するQ&A