有没有办法通过防火墙启用网页抓取?

时间:2013-02-19 15:48:25

标签: java sockets web-scraping jsoup

我正在企业网络上尝试用Java编写JSoup Web scraper,我似乎无法连接。

要测试一下,当我运行以下代码时,它会给我一个java.netConnectException:Connection refused。

    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异常(甚至在给它一个大的超时后)。我该怎么做才能让它在我的网络中工作?

1 个答案:

答案 0 :(得分:2)

我找到了一个解决方案:I had to simply find my proxy and set it in my code.

// 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

此外,您可能需要set the user agent。我在那里留下了“推荐人”代码,尽管我认为在大多数情况下都不需要。请注意,如果您正在访问的Web服务器歧视计算机,则会组成userAgent。

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();