Gợi ý công nghệ sử dụng để lấy dữ liệu tự động đổ vào database

Em đang làm một hệ thống rút trích tài liệu theo chuyên nghành bằng jsp/servlet, thầy giáo em bảo phải lấy được dữ liệu tự động từ một trang khác đổ vào trang lưu trong database để hiển thị lên. Em đang thắc mắc không biết phải sử dụng công nghệ gì của java để làm, mong các anh/chị giải đáp em xin cảm ơn :slight_smile:

import java.net.*;
import java.io.*;

public class URLConnectionReader {
    public static void main(String[] args) throws Exception {
        URL oracle = new URL("http://www.oracle.com/");
        URLConnection yc = oracle.openConnection();
        BufferedReader in = new BufferedReader(new InputStreamReader(
                                yc.getInputStream()));
        String inputLine;
        while ((inputLine = in.readLine()) != null) 
            System.out.println(inputLine);
        in.close();
    }
}
3 Likes

Đó là crawl data
Bạn có thể dùng cách trên của bạn @quangquangvu hoặc sử dụng thư viện như Jsoup để crawl data theo html element

3 Likes

Khi em chạy đoạn code anh chỉ ở console em không nhận được kết quả gì cả. Vì sao lại như vậy ạ ?

Em sửa URL lại là : https://www.oracle.com/index.html

1 Like

Sử dụng thư viện Jsoup để lấy dữ liệu về, sau khi phân tích xong thì insert vào database.

2 Likes

Những việc như crawl dữ liệu từ nơi khác về thì bạn nên dùng một tools nào đó cho phép chạy định kỳ công việc, chạy theo lịch (ví dụ thứ 2, thứ 5 hàng tuần) ( hay gọi là cron job).
Một giải pháp đơn giản bạn có thể bắt đầu ngay đó là setTimeOut để chạy hàm (mình lấy ví dụ hàm từ javascript) bao nhiêu phút, giây một lần. Việc này có thể sẽ mất thời gian hơn bạn chạy hàm trực tiếp cho đến khi không còn dữ liệu nhưng sẽ tránh khỏi bị trang web block ip hay bị rate limit (giới hạn request trong 1 khoảng thời gian).

Về chạy job thì bạn có thể google từ khóa “how to run job by schedule in java” (mình không code java nên không biết).

Về tool crawl thì dùng jsoup là hợp lý.

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?