2012-07-01 212 views
11

我想为实验制作基于Java的网络爬虫。我听说如果这是你第一次使用Java制作Web爬虫,但是,我有两个重要的问题。Java Web爬虫库

  1. 我的程序将如何“访问”或“连接”到网页?请简单说明一下。 (我理解从硬件到软件抽象层的基础知识,这里我对Java抽象有兴趣)

  2. 我应该使用哪些库?我会假设我需要一个连接到网页的库,一个HTTP/HTTPS协议库和一个HTML解析库。

回答

7

这是您的程序如何访问或连接到网页。

URL url; 
    InputStream is = null; 
    DataInputStream dis; 
    String line; 

    try { 
     url = new URL("http://stackoverflow.com/"); 
     is = url.openStream(); // throws an IOException 
     dis = new DataInputStream(new BufferedInputStream(is)); 

     while ((line = dis.readLine()) != null) { 
      System.out.println(line); 
     } 
    } catch (MalformedURLException mue) { 
     mue.printStackTrace(); 
    } catch (IOException ioe) { 
     ioe.printStackTrace(); 
    } finally { 
     try { 
      is.close(); 
     } catch (IOException ioe) { 
      // nothing to see here 
     } 
    } 

这将下载html页面的源代码。

对于HTML解析看到this

而且看看jSpiderjsoup

+0

那么,这是否从一个页面中提取信息,或者干脆转到页?我正在尝试编写一个抓取工具,它将接收用户输入的信息,转到maps.google.com,插入地址并获取路由时间和路由长度,然后将其返回到程序中。这可能吗? – Ungeheuer

+0

@Adrian看看谷歌地图api:https://developers.google.com/maps/documentation/distance-matrix/start –

0

可以explore.apache机器人或Apache的Nutch获得基于java的履带式的感觉

7

Crawler4j是你最好的解决方案,

Crawler4j是一个开源的Java爬虫它提供了一个简单的界面,爬网。您可以在5分钟内设置一个多线程网络爬虫!

另外visit.更多基于java的网页爬虫工具和每个简单的解释。

0

虽然主要用于单元测试Web应用程序,但HttpUnit遍历一个网站,点击链接,分析表格和表单元素,并为您提供有关所有页面的元数据。我将它用于Web爬网,而不仅仅是单元测试。 - http://httpunit.sourceforge.net/

2

我更喜欢crawler4j。 Crawler4j是一个开源的Java爬虫,它为爬网提供了一个简单的界面。您可以在几个小时内设置一个多线程的网络爬虫。

0

我认为jsoup比其他人更好,jsoup运行在Java 1.5以上,Scala,Android,OSGi和Google App Engine上。