2012-04-11 3 views
1

iamがコードを実行しているときにiamがエラーになったときに、ウェブページを解析したい、iamがhtmlunitを使用しています。エラーが発生するUnknow Host:www.google.com

import java.net.URL; 
import java.util.List; 

import com.gargoylesoftware.htmlunit.WebClient; 
import com.gargoylesoftware.htmlunit.html.HtmlImage; 
import com.gargoylesoftware.htmlunit.html.HtmlPage; 

public class scrapImage { 

     public static void main(String[] args) throws Exception  { 
      URL url = new URL("http://www.google.com"); 
      //WebClient webClient = new WebClient(Opera);  
      WebClient webClient = new WebClient();  
      HtmlPage currentPage = (HtmlPage) webClient.getPage(url);  
      //get list of all divs  
      final List<?> images = currentPage.getByXPath("//img");  
      for (Object imageObject : images) {   
       HtmlImage image = (HtmlImage) imageObject;    
       System.out.println(image.getSrcAttribute());  
       }   //webClient.closeAllWindows();   } } 
      } 
     } 

エラーメッセージ:

Exception in thread "main" java.net.UnknownHostException: www.google.com 
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:196) 
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:377) 
    at java.net.Socket.connect(Socket.java:530) 
    at java.net.Socket.connect(Socket.java:480) 
    at java.net.Socket.<init>(Socket.java:377) 
    at java.net.Socket.<init>(Socket.java:251) 
    at org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(DefaultProtocolSocketFactory.java:80) 
    at org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(DefaultProtocolSocketFactory.java:122) 
    at org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:707) 
    at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.open(MultiThreadedHttpConnectionManager.java:1361) 
    at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:387) 
    at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171) 
    at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397) 
    at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:346) 
    at com.gargoylesoftware.htmlunit.HttpWebConnection.getResponse(HttpWebConnection.java:97) 
    at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseFromWebConnection(WebClient.java:1430) 
    at com.gargoylesoftware.htmlunit.WebClient.loadWebResponse(WebClient.java:1388) 
    at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:325) 
    at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:386) 
    at htmlunit.scrapImage.main(scrapImage.java:16) 

誰も私が上記の例外のためのソリューションを知らせることができます。

答えて

1

ネット接続やファイアウォールに関する問題が、インターネットにアクセスするためのJavaプログラムをブロックする可能性があると思います。

1

あなたはプロキシやファイアウォールの背後にいると思います。あなたのシステムであなたの現在のファイアウォールの状態を確認してください。また、プロキシに関連している場合は、このようなコードを変更することができます。

System.getProperties().put("proxySet", "true"); 
System.getProperties().put("proxyHost", "your proxy host name"); 
System.getProperties().put("proxyPort", "85"); 

これはあなたを助けるでしょう。

+0

InetSocketAddressによってプロキシ名が取得されたときaddr =(InetSocketAddress)proxy.address();とSystem.out.println( "プロキシのホスト名:" + addr.getHostName());ヌルポインタをaddr自体として取得し、プロキシがヌルです。あなたは私を案内することができます – developer

+0

すべての要求がthis経由でルーティングされるので、あなたのプロキシサーバーの名前を与えてください。上記のものではなくあなたのプロキシのIPアドレスを与えてください。 – UVM

1

がインターネットに接続しているいくつかの問題があるか、プロキシの背後にあるようだ。このような場合には、

は(ホスト/ポート/ユーザー名/パスワード)プロキシ設定を設定します。

関連する問題