【问题标题】:getting error Unknow Host : www.google.com收到错误未知主机:www.google.com
【发布时间】:2012-04-11 05:07:46
【问题描述】:

我想解析网页,我使用 htmlunit ,当我运行代码时,我遇到错误。

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)

谁能告诉我上述异常的解决方案。

【问题讨论】:

    标签: java html-parsing htmlunit


    【解决方案1】:

    我认为您的网络连接或防火墙的问题可能会阻止 java 程序访问互联网。

    【讨论】:

      【解决方案2】:

      我认为你在代理或防火墙后面。检查您当前系统中的防火墙状态。另外,如果它与代理有关,您可以像这样修改代码。

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

      也许这会对你有所帮助。

      【讨论】:

      • 当我通过 InetSocketAddress addr = (InetSocketAddress) proxy.address(); 获得代理名称时和 System.out.println("代理主机名:" + addr.getHostName()); ,获取空指针作为 addr 本身为空,代理为空。请你指导我
      • 提供您的代理服务器的名称,因为所有请求都通过此路由。请提供您的代理 IP 地址而不是上面一个。
      【解决方案3】:

      似乎互联网连接有问题,或者您使用了代理,

      如果是这种情况,请设置代理设置(主机/端口/用户名/密码)。

      【讨论】:

        猜你喜欢
        • 2012-09-02
        • 2012-04-17
        • 1970-01-01
        • 1970-01-01
        • 2017-06-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多