Thông báo: Download 4 khóa học Python từ cơ bản đến nâng cao tại đây.
Tạo danh sách phim ngẫu nhiên với Python
Trong bài hướng dẫn này, chúng ta sẽ sử dụng Python để thực hiện một dự án thú vị: Crawl danh sách IMDb Top 250 phim nổi tiếng nhất và để Python chọn ngẫu nhiên một bộ phim cho bạn. Bạn sẽ học cách sử dụng các thư viện requests và BeautifulSoup để lấy dữ liệu từ một trang web.

Dưới đây là mã nguồn hoàn chỉnh cho dự án (cũng có thể được tìm thấy trên GitHub):
Cách sử dụng các thư viện requests và BeautifulSoup trong Python
import random  
import requests  
from bs4 import BeautifulSoup  
# URL của trang IMDb Top 250  
URL = 'http://www.imdb.com/chart/top'  
def main():  
    # Gửi yêu cầu đến trang IMDb  
    response = requests.get(URL)  
    # Phân tích HTML của trang  
    soup = BeautifulSoup(response.text, 'html.parser')  
    # (hoặc dùng 'lxml' để tăng tốc độ: `soup = BeautifulSoup(response.text, 'lxml')`)  
    # Lấy các phần tử liên quan đến phim và đánh giá  
    movietags = soup.select('td.titleColumn')  
    inner_movietags = soup.select('td.titleColumn a')  
    ratingtags = soup.select('td.posterColumn span[name=ir]')  
    # Hàm lấy năm sản xuất từ thông tin thẻ HTML  
    def get_year(movie_tag):  
        moviesplit = movie_tag.text.split()  
        year = moviesplit[-1]  # lấy mục cuối cùng  
        return year  
    # Trích xuất thông tin các bộ phim  
    years = [get_year(tag) for tag in movietags]  
    actors_list = [tag['title'] for tag in inner_movietags]  # truy cập thuộc tính 'title'  
    titles = [tag.text for tag in inner_movietags]  
    ratings = [float(tag['data-value']) for tag in ratingtags]  # truy cập thuộc tính 'data-value'  
    n_movies = len(titles)  # Số lượng phim  
    # Lựa chọn phim ngẫu nhiên  
    while True:  
        idx = random.randrange(0, n_movies)  
        print(f'{titles[idx]} {years[idx]}, Rating: {ratings[idx]:.1f}, Starring: {actors_list[idx]}')  
        user_input = input('Bạn có muốn chọn phim khác không (y/[n])? ')  
        if user_input != 'y':  
            break  
if __name__ == '__main__':  
    main()  
Giải thích mã nguồn:
requests và BeautifulSoup:
requests.get(URL): Gửi yêu cầu HTTP để lấy mã HTML của trang web.BeautifulSoup: Phân tích cú pháp HTML giúp dễ dàng trích xuất dữ liệu.
Lấy dữ liệu:
Bài viết này được đăng tại [free tuts .net]
- Sử dụng 
soup.select()để chọn các thẻ HTML cụ thể:td.titleColumn: Chứa tiêu đề phim và năm sản xuất.td.titleColumn a: Chứa liên kết và thông tin diễn viên.td.posterColumn span[name=ir]: Chứa điểm đánh giá.
 
Trích xuất thông tin:
- Năm sản xuất: Tách thông tin từ chuỗi trong thẻ 
td.titleColumn. - Diễn viên: Truy cập thuộc tính 
titlecủa thẻ<a>. - Điểm đánh giá: Chuyển giá trị trong thuộc tính 
data-valuethành số thực (float). 
Chọn phim ngẫu nhiên:
random.randrange(0, n_movies): Chọn một chỉ mục ngẫu nhiên trong danh sách phim.- Hiển thị thông tin phim (tên, năm, điểm đánh giá, và diễn viên chính).
 - Hỏi người dùng nếu muốn xem thêm phim ngẫu nhiên khác.
 
Kết quả chạy chương trình
Khi chạy script, chương trình sẽ in ra một bộ phim được chọn ngẫu nhiên từ danh sách IMDb Top 250, cùng với các thông tin:
The Shawshank Redemption (1994), Rating: 9.3, Starring: Tim Robbins, Morgan Freeman Bạn có muốn chọn phim khác không (y/[n])?
Hãy nhập y để chọn phim tiếp theo hoặc bất kỳ phím nào khác để kết thúc chương trình.
Kết quả
- Lưu kết quả vào một file .txt.
 - Thêm tính năng lọc phim dựa theo thể loại, điểm đánh giá hoặc năm sản xuất.
 - Dùng giao diện người dùng (GUI) thay vì dòng lệnh.
 
Chúc bạn lập trình vui vẻ với Python!

            Các kiểu dữ liệu trong C ( int - float - double - char ...)        
            Thuật toán tìm ước chung lớn nhất trong C/C++        
            Cấu trúc lệnh switch case trong C++ (có bài tập thực hành)        
            ComboBox - ListBox trong lập trình C# winforms        
            Random trong Python: Tạo số random ngẫu nhiên        
            Lệnh cin và cout trong C++        
                Cách khai báo biến trong PHP, các loại biến thường gặp            
                Download và cài đặt Vertrigo Server            
                Thẻ li trong HTML            
                Thẻ article trong HTML5            
                Cấu trúc HTML5: Cách tạo template HTML5 đầu tiên            
                Cách dùng thẻ img trong HTML và các thuộc tính của img            
                Thẻ a trong HTML và các thuộc tính của thẻ a thường dùng