Sử dụng Python lấy dữ liệu ảnh GIF

683
14-04-2018
Sử dụng Python lấy dữ liệu ảnh GIF


Bài viết sau sẽ hướng dẫn bạn cách Sử dụng Python lấy dữ liệu ảnh GIF. Hãy cùngBizfly Cloud theo dõi nhé!

 1. Mở đầu 

Hồi đầu tiên bắt đầu tìm hiểu Python, đó là việc sử dụng nó để scraping dữ liệu từ những trang web khác nhưng bị em Python tán tính mạnh quá cho nên cũng tập tành đi chơi đêm với em ấy. Và giờ thì em cũng chính thức để em ấy thành cô vợ cả và rất nhiều cô vợ hai.

Trong phần hướng dẫn này thì em sẽ làm một ví dụ nhỏ sử dụng Python để lấy dữ liệu ảnh GIF trên trang 9GAG. Tại cứ rảnh là em lên trang này coi mấy cái ảnh GIF giải trí. Nên tại sao ta không thử phân tích dữ liệu của nó và viết một tool tự động lấy về cài mới nhất khi có.

Những module sẽ sử dụng lần này:

Requests – [http://docs.python-requests.org/en/master/] 

Beautiful Soup – [http://www.crummy.com/software/BeautifulSoup/bs4/doc/]

2. Phân tích

Địa chỉ url mình sẽ lấy dữ liệu ở đây là 9GAG. Khi vào trình trang, bật trình debug trang web lên bạn để ý bạn sẽ thấy mỗi bài đăng gif tương ứng với 1 article.

Trong mỗi article này sẽ có nội dung tương ứng như (tiêu đề, địa chỉ url, ảnh đại diện, đường dẫn file mp4, wbm). Ở trang 9gag này thì ảnh gif được chuyển đổi thành 1 file mp4 ngắn hoặc là file có định dạng wbm (muốn biết chuẩn này là gì anh em có thể gg để tìm hiểu tiếp nhé)

Sử dụng Python lấy dữ liệu ảnh GIF - Ảnh 1.

3. Viết code

Phần thú vị nhất đây rồi. Ở đây mình sẽ chia làm hai bước. Đầu tiên chúng ta sẽ gọi đến trang để lấy về HTML.

Lấy về 

Sử dụng Python lấy dữ liệu ảnh GIF - Ảnh 2.

Giờ là phần giải thích cho các bạn đoạn code trên nó xử lý thế nào nhé. Đầu tiên sẽ là module (requests).

Sử dụng Python lấy dữ liệu ảnh GIF - Ảnh 3.

Ta sẽ gửi request get đến url của trang 9gag để nhận về dữ liệu thuần HTML.

Sử dụng Python lấy dữ liệu ảnh GIF - Ảnh 4.

Tiếp đến để kiểm tra xem request trả về có thành công hay không, ta sẽ kiểm tra trạng thái hay tên tiêng anh là status . Nếu status == 200. Tức là ta đã lấy về HTML rồi. Bây giờ các bạn để ý cái bước phân tích bên trên mình có nói qua nha.

Giờ là lúc mình sử dụng phần đó.

Sử dụng Python lấy dữ liệu ảnh GIF - Ảnh 5.

Ta sử dụng module Beautiful Soup để có thể lọc ra các đối tượng Html mà mình cần. Load html vào beautiful soup html = BeautifulSoup(body.text) sau đó ta lọc ra các ảnh gif (mỗi ảnh gif tương ứng với 1 article). 

Câu lệnh này articles = html.find_all('article') sẽ trả về một mảng các article.

Xử lý triệt để

Phần này sẽ là phần quan trọng nhất giúp mọi người lấy ra được những thông tin cần thiết nhé. Có được mảng các article rồi, ta sẽ truyền mảng đó vào hàm sau để lấy ra các thông tin cần thiết.

Sử dụng Python lấy dữ liệu ảnh GIF - Ảnh 6.

Chúng ta sẽ for lần lượt các phần tử trong mảng article. Tiếp tục truyền vào Beautiful Soup để phân tích ra thẻ image, tiêu đề (h2) và slug của ảnh gif.

Tiếp đến chúng ta sẽ tìm tất cả thẻ source và lấy ra thuộc tính src để lấy ra đường dẫn mp4 và webm. Sau đó lưu đối tượng vào mảng và trả về khi xử lý hoàn tất.

4. Thực tiễn

Bạn đã thực sự hiểu cách làm việc của đoạn code trên. Nếu chưa hiểu, bạn có thể ngẫm thêm lần nữa nhé.

Vì năng lực sư phạm của mình chưa đạt trình độ cao siêu, hoặc nếu bạn có khả năng giải thích ngắn gọn xúc tích hơn hãy đóng góp để mình sửa nhé.

Bạn có thể lấy code trên để chạy. Mình tin là chạy được vì mình đã thử. Chúc các bạn thao tác thành công!

5. Mở rộng

Bạn thử viết thêm một số chức năng như lưu vào CSDL. Lấy thêm dữ liệu trước đó. Vừa học vừa làm là một cách nhanh nhất để tăng khả năng của bản thân mà.

Có thể bạn quan tâm: Convert kiểu dữ liệu list sang kiểu string trên Python

Tác giả: Quang Trương Tuấn - Techtalk via Viblo.asia 

SHARE