Java 获取未知错误主机:www.google.com

Java 获取未知错误主机:www.google.com,java,html-parsing,htmlunit,Java,Html Parsing,Htmlunit,我想解析网页,我使用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 sc

我想解析网页,我使用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();           } } 
          }
      }
import java.net.URL;
导入java.util.List;
导入com.gargoylesoftware.htmlunit.WebClient;
导入com.gargoylesoftware.htmlunit.html.HtmlImage;
导入com.gargoylesoftware.htmlunit.html.HtmlPage;
公共类剪贴图片{
公共静态void main(字符串[]args)引发异常{
URL=新URL(“http://www.google.com");
//WebClient WebClient=新的WebClient(Opera);
WebClient WebClient=新的WebClient();
HtmlPage currentPage=(HtmlPage)webClient.getPage(url);
//获取所有div的列表
最终列表图像=currentPage.getByXPath(“//img”);
对于(对象图像对象:图像){
HtmlImage=(HtmlImage)imageObject;
System.out.println(image.getsrctattribute());
}//webClient.closeAllWindows();}
}
}
错误消息:

线程“main”java.net中的异常。未知hostexception:www.google.com
位于java.net.PlainSocketImpl.connect(PlainSocketImpl.java:196)
位于java.net.socksocketimpl.connect(socksocketimpl.java:377)
位于java.net.Socket.connect(Socket.java:530)
位于java.net.Socket.connect(Socket.java:480)
位于java.net.Socket(Socket.java:377)
位于java.net.Socket。(Socket.java:251)
位于org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(DefaultProtocolSocketFactory.java:80)
位于org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(DefaultProtocolSocketFactory.java:122)
位于org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:707)
位于org.apache.commons.httpclient.multi-threadedhttpconnectionmanager$HttpConnectionAdapter.open(multi-threadedhttpconnectionmanager.java:1361)
位于org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:387)
位于org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
位于org.apache.commons.httpclient.httpclient.executeMethod(httpclient.java:397)
位于org.apache.commons.httpclient.httpclient.executeMethod(httpclient.java:346)
位于com.gargoylesoftware.htmlunit.HttpWebConnection.getResponse(HttpWebConnection.java:97)
位于com.gargoylesoftware.htmlunit.WebClient.loadWebResponseFromWebConnection(WebClient.java:1430)
在com.gargoylesoftware.htmlunit.WebClient.loadWebResponse(WebClient.java:1388)上
在com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:325)上
在com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:386)上
位于htmlunit.scrapImage.main(scrapImage.java:16)

任何人都可以告诉我上述异常的解决方案。

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

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

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

这可能会对您有所帮助。

似乎Internet连接有问题,或者您正在使用代理


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

当我通过InetSocketAddress addr=(InetSocketAddress)proxy.address()获取代理名称时;和System.out.println(“代理主机名:+addr.getHostName()),获取空指针作为addr本身为空,而代理为空。请告诉我您的代理服务器的名称,因为所有请求都是通过此服务器路由的。请提供您的代理IP地址,而不是上面的地址。
System.getProperties().put( "proxySet", "true" );
System.getProperties().put( "proxyHost", "your proxy host name" );
System.getProperties().put( "proxyPort", "85" );