[SML 7666] Re: HTMLの取得がうまくできません
Hidetaka MASUDA
masuda @ mail.dendai.ac.jp
2009年 9月 28日 (月) 14:38:17 JST
増田です。
Java と Jun 760 で自分のサーバにアクセスして環境変数の違いを見てみまし
た。異なっているのは、UserAgent ぐらいでした。
Java: HTTP_USER_AGENT Java/1.6.0_05
Jun: HTTP_USER_AGENT
Jun の方は UserAgent が設定されていません。
試しに Java の方で UserAgent をなしにしてみると、ニコニコ生放送もエラー
になります。
以下のプログラムの UserAgentなし の行を注釈なしにしてみてください。
--------------------------- cut here ------------------------------
import java.io.*;
import java.net.*;
class NicoGet {
public static void main(String[] args) {
try {
String urlString =
"http://live.nicovideo.jp/recent?p=1&tab=common";
URL url = new URL(urlString);
URLConnection uc = url.openConnection();
// uc.setRequestProperty("User-Agent", "");// UserAgentなし
InputStream input = uc.getInputStream();
int c;
while ((c = input.read()) != -1) System.out.write(c);
input.close();
} catch (MalformedURLException ex) {
System.out.println("MalformedURLException: " + ex);
} catch (IOException ex) {
System.out.println("IOException: " + ex);
}
}
}
--------------------------- cut here ------------------------------
JunURL でも UserAgent が設定できると大丈夫なような気がするのですが、いか
がでしょうか。
# ちょっとブラウズしてみましたがすぐにはわかりませんでしたので、どなたか
わかる方のフォローをお願いします。
久保田 吉彦 さんは書きました:
> 自家製ニコ生アラートのようなものをVisualWorksで作成しようと思い、下記の
> プログラムでニコニコ生放送のページの情報を取得しようとしました。
>
> | anURL readStream writeStream |
> anURL := JunURL named: 'http://live.nicovideo.jp/recent?p=1&tab=common' .
> JunControlUtility
> assert:[readStream := anURL readStream.
> writeStream := 'nico.html' asFilename writeStream]
> do:[[readStream atEnd not] whileTrue:
> [writeStream nextPutAll:(JunStringUtility getLine:
> readStream)]]
> ensure:[writeStream close.
> readStream close].
>
> 困っているのはWebブラウザでURLを開いたときに取得できるHTMLと異なった情報
> を持ってきてしまうことです。
> nico.htmlを開くと'エラーが発生しました'と書かれたページが表示されます。
>
> いまのところ同じURLのHTMLを取得するプログラムをJavaとPythonで書いてみま
> したが、こちらでは期待した情報が得られました。
>
> プログラムのどこがいけないのでしょうか?
> ご存知の方教えていただけませんでしょうか。
--
------
〒101-8457 東京電機大学 未来科学部 情報メディア学科 増田 英孝
E-mail: masuda @ im.dendai.ac.jp TEL 03-5280-3551
http://www.cdl.im.dendai.ac.jp/%7emasuda/ FAX 03-5280-3592
It's more fun to compute!
SML メーリングリストの案内