2012-02-12 7 views

答えて

-1

wgetを使用してください。

のLinux wgetの例:Windows用 http://linuxreviews.org/quicktips/wget/

Wgetは: ​​

+0

なぜdownvoteですか? Wgetは単独で使用することも、Javaから呼び出すこともでき、堅牢でテストされたパッケージに必要なすべての機能が含まれています。 – dotancohen

0

それはサブだApacheのライブラリーがあるかどうかは分かりませんが、私はページをクロールするためhtmlunitを使用していますし、すべての以下のコードを含むページ。ダウンロードは、URLConnectionを介して行うことができます。 this page


    public static void walkAllHtmlPages(final String startURL) throws IOException, SAXException { 
    final WebClient webClient = createWebClient(); 

    try { 
     final HtmlPage page = webClient.getPage(startURL); 
      try { 
       Set visitedURLs = new HashSet(); 

       List links = page.getAnchors(); 

       // now recursively walk all pages 
       recursivelyFollowLinks(webClient, links, visitedURLs); 
      } finally { 
       if(page != null) { 
        page.cleanUp(); 
       } 
      } 
    } finally { 
     webClient.closeAllWindows(); 
    } 
} 

    public static WebClient createWebClient() { 
     final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_3_6); 
     webClient.setTimeout(30000); 
     webClient.setJavaScriptEnabled(false); 
     webClient.setCssEnabled(true); 
     webClient.setAppletEnabled(true); 
     webClient.setRedirectEnabled(true); // follow old-school HTTP 302 redirects - standard behaviour 

     webClient.setHTMLParserListener(null); 
     webClient.setIncorrectnessListener(new IncorrectnessListener() { 
      @Override 
      public void notify(String message, Object origin) { 
       // Swallow for now, but maybe collect it for optional retrieval? 
      } 
     }); 
     webClient.setCssErrorHandler(new SilentCssErrorHandler()); 

     return webClient; 
    } 

    private static void recursivelyFollowLinks(WebClient webClient, List links, Set visitedURLs) throws SAXException, IOException { 
     try { 
      for(HtmlAnchor link : links) { 
       String url = link.getHrefAttribute(); 

       if (!visitedURLs.contains(url)) { 
        visitedURLs.add(url); 

        visitSubLink(webClient, visitedURLs, link, url); 
       } 
      } 
     } catch (RuntimeException e) { 
      throw new IllegalArgumentException("While retrieving links: " + getLinksAsString(links), e); 
     } 
    } 

    private static void visitSubLink(WebClient webClient, 
      Set visitedURLs, HtmlAnchor link, String url) throws IOException, SAXException { 
     URL current = link.getPage().getUrl(); 

     try { 
      HtmlPage ret = (HtmlPage)link.click(); 

      List sublinks = ret.getAnchors(); 

      recursivelyFollowLinks(webClient, sublinks, visitedURLs); 
     } catch (RuntimeException e) { // NOPMD 
      throw new RuntimeException("While clicking link: " + link.getId() + " to " + url, e); 
     } 
    } 

関連する問題