1

我在一个公司网络上试图用 Java 编写一个 JSoup 网络爬虫,但我似乎无法连接。

为了进行测试,当我运行以下代码时,它给了我一个 java.netConnectException: Connection denied。

    Socket socket = null;
    try {
        socket = new Socket("google.com", 80)
        System.out.println("it works!");
    } finally {            
        if (socket != null) try { socket.close(); } catch(IOException e) {}
    }

作为记录,我的 JSoup 代码如下所示:

    Connection con = Jsoup.connect("http://en.wikipedia.org/wiki/Main_Page");
    Document doc = con.get();

当我单独运行它时,它给了我一个 TimeOut 异常(即使在给它一个慷慨的超时之后)。我应该怎么做才能让它在我的网络中工作?

4

1 回答 1

2

我找到了一个解决方案:我必须简单地找到我的代理并将其设置在我的代码中。

// if you use https, set it here too
System.setProperty("http.proxyHost", "<proxyip>"); // set proxy server
System.setProperty("http.proxyPort", "<proxyport>"); // set proxy port

Document doc = Jsoup.connect("http://your.url.here").get(); // Jsoup now connects via proxy

此外,您可能需要设置用户代理。我在那里留下了“推荐人”代码,尽管我认为在大多数情况下没有必要。请注意,userAgent 是在您访问的 Web 服务器歧视机器的情况下组成的。

doc = Jsoup.connect("https://www.facebook.com/")
  .userAgent("Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6")
  .referrer("http://www.google.com")
  .get();
于 2013-02-19T16:05:05.527 回答