Crawl dữ liệu từ web trường

Mình đang làm project lấy dữ liệu điểm từ web trường về phân tích nhưng mình gặp vấn đề như sau:
để lấy được thông tin tất cả học thì thì phải nhấn vào nút “Xem tất cả học kì”, nhưng dùng Jsoup nhưng đến đây mình bí quá.!
web : http://thongtindaotao.sgu.edu.vn/Default.aspx?page=xemdiemthi&id=3118520037

Vì trang này viết bằng ASP.NET nên nó tự sinh ra nhiều chức năng dùng đến Javascript. Jsoup chỉ dùng để đọc HTML thô, không thao tác được với Javascript.
Có lẽ bạn nên dùng đến các bộ thư viện nào có thể thực thi được Javascript như Selenium chẳng hạn.

8 Likes

Hi there,

Tớ có nghía qua trang web, và thấy khi cậu ấn vào nút “xem tất cả học kỳ”, thực chất cậu gửi request này:

curl -d -L -X POST 'http://thongtindaotao.sgu.edu.vn/Default.aspx/?page=xemdiemthi&id=3118520037'

Từ request trên, cậu sẽ nhận được html của trang mà cậu cần.
Thế nên, trong script crawl dữ liệu, cậu có thể gửi request như trên, và dùng Jsoup để bóc ra dữ liệu mà cậu muốn có.

Hope it helps!

8 Likes

nếu Hà Mã Tím đáng yêu không lầm thì ASP cũng chơi như Spring Boot, tức là nhấn nút nào đó sẽ response về HTML đã render sẵn, rồi chèn vô.
Vậy bạn chỉ cần gửi request như @library là sẽ có được HTML thô

6 Likes

@library cho em hỏi curl là gì ?

À, curl là 1 tool phổ biến trên linux, dùng để gửi HTTP request tới 1 server :smile:
Nó trở thành tiêu chuẩn, tới mức khi cậu muốn share cách gọi HTTP request tới server cho ai đó, cậu share curl command, và người còn lại sẽ hiểu.

7 Likes

Làm Thin nhớ đến một kỷ niệm vui, khi chat qua Skype hướng dẫn một bạn SV, bảo cô ấy dùng thử dùng “cun” đi. Cô ấy (lẽ ra nếu không nghe rõ phải hỏi lại) đàng này đi Google từ cun (sao đó lại có tê vào cuối từ :frowning: ), và chửi cho mình một trận. Thiệt là tai hại. Nên giờ luôn có sẵn những thứ mà không biết phát âm thì gửi hình cho nhanh.

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