人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

CGIでYahooの検索結果のソースを取得したいです。
下記を実行してみましたが、エラー画面のソースが返ってきます。
原因が分かりますでしょうか?

$keyword = 'words';
$domain = 'search.yahoo.co.jp';
$next = '/search?p='.$keyword.'&ei=UTF-8&b=1&n=20';
$addr = (gethostbyname("$domain"))[4];
$name = pack("S n a4 x8", 2, 80, $addr);
socket(YAHOOIN, 2, 1, 0);
connect(YAHOOIN, $name);
binmode(YAHOOIN);
select(YAHOOIN); $| = 1;
select(YAHOOIN); $| = 1; select(stdout);
print YAHOOIN "GET $file HTTP/1.0\r\n\r\n";
while(<YAHOOIN>){
$htmldatas .= $_;
}
close(YAHOOIN);

●質問者: uwao
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● a-kuma3
●100ポイント ベストアンサー

ヘッダを指定せずに、質問にあるリクエストを出すと、レスポンスが 301 で返ってきます。

HTTP/1.0 301 Moved Permanently

「エラー画面のソース」と言ってるのは、これですよね。


前にあった質問のときと同じく、Host ヘッダを指定すると結果が正しく得られるようです。

# Host ヘッダを指定する
print YAHOOIN "GET $file HTTP/1.0\r\nHost: $domain\r\n\r\n";

# $next か $file か、というところはタイプミスだと思うので、質問のコードをそのまま使ってます。


uwaoさんのコメント
有り難うございました。 正常に取得出来ました。 ご指摘のとおりHostヘッダが原因でした。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ