0

私はJavaプログラムを介してウェブサイトから画像やファイルをダウンロードする方法を学ぼうとしています。以下のコードは、http://docs.oracle.com/javase/tutorial/networking/urls/readingURL.htmlからコピーされています。このプログラムは、提供されたURLからのhtmlファイルコードを表示することになっています。

サイトからの引用:「プログラムを実行すると、コマンドウィンドウをスクロールすると、http://www.oracle.com/にあるHTMLファイルのHTMLコマンドとテキストコンテンツが表示されます。」

私の問題は、一部のWebサイトでは機能しますが、interfacelift.comでは機能しないことです。そのWebサイトには何も表示されません。私はその理由を理解しようとしています。

import java.net.*;
import java.io.*;

public class URLReader {
public static void main(String[] args) throws Exception {

    URL oracle = new URL("http://interfacelift.com/");
    BufferedReader in = new BufferedReader(
    new InputStreamReader(oracle.openStream()));

    String inputLine;
    while ((inputLine = in.readLine()) != null)
        System.out.println(inputLine);
    in.close();
}
}
4

1 に答える 1

0

あなたがウェブブラウザを使用していることを認識していないため、このサイトはあなたにコンテンツを送信することを拒否していると思われます。一部のWebサイトは、プログラムがWebページを読み取ろうとするなど、自動化されたWebスクレイパーを評価しないため、それらをブロックすることを選択します。

Pythonを使用して同じリクエストを実行しようとすると、403Forbiddenエラーが発生しました。私はあなたのJavaアプリケーションがほとんど同じエラーを受け取っていると思います:

Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import urllib2
>>> urllib2.urlopen("http://interfacelift.com/").read()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python27\lib\urllib2.py", line 126, in urlopen
    return _opener.open(url, data, timeout)
  File "C:\Python27\lib\urllib2.py", line 406, in open
    response = meth(req, response)
  File "C:\Python27\lib\urllib2.py", line 519, in http_response
    'http', request, response, code, msg, hdrs)
  File "C:\Python27\lib\urllib2.py", line 444, in error
    return self._call_chain(*args)
  File "C:\Python27\lib\urllib2.py", line 378, in _call_chain
    result = func(*args)
  File "C:\Python27\lib\urllib2.py", line 527, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 403: Forbidden
于 2013-02-09T13:11:27.870 に答える