2012-07-01 38 views
11

Tôi muốn tạo trình thu thập thông tin web dựa trên Java cho một thử nghiệm. Tôi nghe nói rằng làm cho một Web Crawler trong Java là con đường để đi nếu đây là lần đầu tiên của bạn. Tuy nhiên, tôi có hai câu hỏi quan trọng.Thư viện trình thu thập thông tin web Java

  1. Làm cách nào để chương trình 'truy cập' hoặc 'kết nối' với các trang web? Xin vui lòng cho một lời giải thích ngắn gọn. (Tôi hiểu các khái niệm cơ bản về các lớp trừu tượng từ phần cứng đến phần mềm, ở đây tôi quan tâm đến việc trừu tượng hóa Java)

  2. Tôi nên sử dụng thư viện nào? Tôi cho rằng tôi cần một thư viện để kết nối với các trang web, một thư viện cho giao thức HTTP/HTTPS và một thư viện để phân tích cú pháp HTML.

Trả lời

7

Đây là cách chương trình của bạn 'truy cập' hoặc 'kết nối' với các trang web.

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

Điều này sẽ tải xuống nguồn trang html.

Đối với phân tích cú pháp HTML thấy this

Ngoài ra hãy xem tại jSpiderjsoup

+0

Vì vậy, điều này lấy thông tin từ một trang, hoặc đơn giản là đi đến trang? Tôi đang cố gắng viết trình thu thập thông tin sẽ lấy dữ liệu nhập của người dùng, truy cập maps.google.com, cắm địa chỉ và lấy thời gian tuyến đường và chiều dài tuyến đường và đưa nó trở lại chương trình. Điều này có thể không? – Ungeheuer

+0

@Adrian có một cái nhìn tại google maps api: https://developers.google.com/maps/documentation/distance-matrix/start –

0

Bạn có thể explore.apache droid hoặc apache Nutch để có được cảm giác của bánh xích java dựa

7

Crawler4j sự là giải pháp tốt nhất cho bạn,

Crawler4j là một mã nguồn mở Java bánh xích mà cung cấp một giao diện đơn giản cho thu thập thông tin trên web. Bạn có thể thiết lập trình thu thập dữ liệu web đa luồng trong 5 phút!

Cũng visit. để biết thêm java dựa cụ web crawler và giải thích ngắn gọn cho mỗi.

0

Mặc dù sử dụng chủ yếu cho các ứng dụng web đơn vị kiểm tra, HttpUnit đi qua một trang web, nhấp chuột liên kết, phân tích bảng và các yếu tố hình thức, và cung cấp cho bạn dữ liệu về tất cả các trang. Tôi sử dụng nó cho Thu thập thông tin trên web, không chỉ cho Thử nghiệm đơn vị. - http://httpunit.sourceforge.net/

2

Tôi muốn crawler4j. Crawler4j là trình thu thập thông tin mã nguồn mở Java cung cấp giao diện đơn giản để thu thập thông tin trên web. Bạn có thể thiết lập trình thu thập dữ liệu web đa luồng trong vài giờ.

5

Ngay bây giờ có một trình bao gồm nhiều trình phân tích cú pháp HTML dựa trên java hỗ trợ truy cập và phân tích cú pháp các trang HTML.

Here's các comple te danh sách các phân tích cú pháp HTML với so sánh cơ bản.

+1

@ Jean-FrançoisCorbett: Tôi đã tinh chỉnh câu trả lời của mình ngay bây giờ. – Vishnu

0

Tôi nghĩ rằng jsoup là tốt hơn so với những người khác, jsoup chạy trên Java 1.5 trở lên, Scala, Android, OSGi và Google App Engine.

Các vấn đề liên quan