BoilerPipe for Java を使用して、インターネットからいくつかの記事を抽出します。多くのサイトで機能しますが、いくつかのサイトでは、Web ブラウザーで認証を必要としないときに、Http 401 サーバー エラーが発生します...
401 エラーを返すサイトの例を次に示します: http://www.nature.com/nchem/journal/v7/n4/full/nchem.2206.html
私はこれで ArticleExtractor を呼び出します:
URL url = new URL("http://www.nature.com/nchem/journal/v7/n4/full/nchem.2206.html");
String article = ArticleExtractor.INSTANCE.getText(url);
そして、ここにエラーがあります:
de.l3s.boilerpipe.BoilerpipeProcessingException: java.io.IOException: Server returned HTTP response code: 401 for URL: http://www.nature.com/nchem/journal/v7/n4/full/nchem.2206.html
スタック トレースを調べたところ、接続が確立された直後に問題が発生したことがわかりました (BoilerPipe クラスで)。
final URLConnection conn = url.openConnection();
final String ct = conn.getContentType(); // The Exception is thrown here !
Web ブラウザーで記事を表示できるときに、他の Web サイトでもエラー 403 が発生しました。この問題を回避するには?
ありがとうございました !
編集-更新:接続を開いた後に次の行を追加することで、403エラーの問題を解決できました:
conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2");
しかし、私はまだ 401 問題を解決していません。Web ブラウザーでヘッダー内の情報を検索したところ、ブラウザーでも 401 エラーが発生することがわかりましたが、それでも情報を取得できます。プリントスクリーンを作りました: Image http://img11.hostingpics.net/pics/757747error401.png
Webブラウザで機能するURLを使用するだけでテキストを取得できるかどうかさえわかりません...誰かが私を助けることができれば、それは素晴らしいことです! :)
編集 - 更新 2 : ネットワークを調べたところ、200 を返すいくつかのリンクが見つかりました (基本的には最初のリンクからいくつかの変更がありますが、多くの GET パラメータが含まれています) が、それでも 401 エラーが返されたため、何を使用すればよいかわかりません. 302/303 リダイレクトもいくつかありましたが、それ以上の結果はありませんでした。
編集 - 更新 3 : 言い換えると、物事がより明確になるかもしれません: URLConnection
Web ブラウザーが行うように、リクエストの「パス」をたどることができる方法はありますか?