[Thực hành] Crawl danh sách bài hát

String & Regex

Mục tiêu

Luyện tập sử dụng RegularExpression.

Mô tả

Viết một ứng dụng cho phép xử lý mã HTML và lọc thông tin.

Ứng dụng nhận vào URL của một trang web chứa danh sách các bài hát, phân tích mã HTML và hiển thị danh sách các bài hát có trong trang web đó..

Sử dụng trang https://www.nhaccuatui.com/bai-hat/nhac-tre-moi.html để làm mẫu

Hướng dẫn

Bước 1: Tạo class CrawlSongExample

Bước 2: Tạo phương thức main trong lớp CrawlSongExample

public static void main(String[] args) {
  try {
     // Code here
  } catch (MalformedURLException e) {
     e.printStackTrace();
  } catch (UnsupportedEncodingException e) {
     e.printStackTrace();
  } catch (IOException e) {
     e.printStackTrace();
  }
}

Lưu ý: Tất cả các lệnh được đặt vào khối try/catch

Bước 3: Sử dụng URL của java.net để khởi tạo đường dẫn thư viện nhạc muốn lấy danh sách bài hát

URL url = new URL("https://www.nhaccuatui.com/bai-hat/nhac-tre-moi.html");

Bước 4: Mở stream và đưa nó vào InputStreamReader

// open the stream and put it into BufferedReader
Scanner scanner = new Scanner(new InputStreamReader(url.openStream()));
scanner.useDelimiter("\\Z");
String content = scanner.next();
// close scanner
scanner.close();

Bước 5: Xóa tất cả các new line trong content lấy được

// remove all new line
content = content.replaceAll("\\n+", "");

Bước 6: Lọc nội dung content lấy được trong tag a chứa class name_song và In ra danh sách tên bài hát lấy được theo điều kiện lọc

// regex
Pattern p = Pattern.compile("name_song\">(.*?)</a>");
Matcher m = p.matcher(content);
while (m.find()) {
   System.out.println(m.group(1));
}

Bước 7: Chạy chương trình, quan sát kết quả hiển thị danh sách bài hát có thể như sau:

Tối Nay Em Muốn Sao
Tình Yêu Của Anh (Sing My Song - Bài Hát Hay Nhất 2018 - Tập 5)
Như Ngày Nào
Nụ Hôn Đánh Rơi (Tháng Năm Rực Rỡ OST)
Rực Rỡ Tháng Năm (Tháng Năm Rực Rỡ OST)
Cô Gái m52
Tất Cả Đều Thua Em
Together We Fly
Người Về Trong Kỉ Niệm
Tâm Sự Tuổi 30 (Ông Ngoại Tuổi 30 OST)
Yêu (Tháng Năm Rực Rỡ OST)
Người Anh Em
Em Đã Từng
Hôm Nay Tôi Buồn
Hương À (Sing My Song - Bài Hát Hay Nhất 2018 - Tập 3)
Em Sắp Kết Hôn
Vui Thôi Đừng Vui Quá (Sing My Song - Bài Hát Hay Nhất 2018 - Tập 5)
Sao Tôi Vào Đây (Sing My Song - Bài Hát Hay Nhất 2018 - Tập 5)
Chúng Ta Chẳng Giống Nhau
Mẹ
Là Anh Đó (Sing My Song - Bài Hát Hay Nhất 2018 - Tập 2)
Bùa Mê (Sing My Song - Bài Hát Hay Nhất 2018 - Tập 5)
Vì Yêu Là Nhớ (Ông Ngoại Tuổi 30 Ost)
Vỡ (Siêu Sao Siêu Ngố OST)
Gọi Tên Em Trong Đêm Cover
Tối Nay Một Mình
Nói Với Em Rằng...
Em Sẽ Hối Hận Cover
Đời Dạy Tôi (Ông Ngoại Tuổi 30 OST)
Mình Là Người Tình
Yêu Bạn Được Không (Friendzone) (Sing My Song - Bài Hát Hay Nhất 2018 - Tập 1)
Niệm Khúc Cuối (Tháng Năm Rực Rỡ OST)
Có Nên Yêu Một Lần Nữa
Cùng Anh Đi Xa
Nếu Yêu Em
Chia Tay Vì Quá Hiểu
Em Gái Mưa (Acoustic Cover)
Yêu Một Người Bận Rộn
Phía Sau Một Cô Gái (Acoustic Cover)
Yêu Thương Ngày Đó (Yêu Em Bất Chấp OST)
Cô Gái m52
Tất Cả Đều Thua Em
Nụ Hôn Đánh Rơi (Tháng Năm Rực Rỡ OST)
Together We Fly
Buồn Của Anh
Như Ngày Nào
Rực Rỡ Tháng Năm (Tháng Năm Rực Rỡ OST)
Hôm Nay Tôi Buồn
Người Về Trong Kỉ Niệm
Mình Cưới Nhau Đi
Done

Hãy tham gia nhóm Học lập trình để thảo luận thêm về các vấn đề cùng quan tâm.

Leave a Reply

Your email address will not be published. Required fields are marked *