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

838

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:

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é)

Techtalk-9gag

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ề đống bầy nhầy HTML.

1. Lấy về đống bầy nhầy

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

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

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 (đọc sờ ta tút). Nếu status == 200. Tức là ta đã lấy về cái đống bầy nhầy rồi. Bây giờ anh em để ý 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 nó nè.

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.

2. Xử lý triệt để đống bầy nhầy.

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.

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.

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 :D. 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ử :). Hoặc bạn có thể xem ngay trực tiếp demo tại địa chỉ [http://bideox.com/post/]. Tool được viết nhắm mục đích nghịch là chính, để áp dụng và một số ví dụ sau này. Lưu ý, địa chỉ trên có thể chết bất cứ lúc nào nên demo chỉ mang tính chất tham khảo :D.

Bạn là Python Dev với năng lực đáng gờm? Bạn đang có mức lương “không phải dạng vừa” ở một công ty tầm cỡ? Đãi ngộ hiện tại bạn đang nghĩ là đã xứng tầm?

Nhưng như bạn cũng biết rồi đấy, Python giờ đang hot và tất nhiên, Dev Python cũng hot với giá rất cao và những công ty đã tuyển Dev Python vào team thì chắc chắn một điều rằng, đãi ngộ cũng thuộc hàng Level Max. Ví dụ như ở Trust Circle Global nhé:

  • Khách hàng trong nước thì ít  mà nước ngoài thì tha hồ, trau dồi ngoại ngữ và văn hóa phong cách làm việc rất Tây và linh hoạt
  • Python Dev là phải offer $1500 ngay liền tay
  • Hàng tháng lương về chưa kịp đếm hết lại bị kêu lên lãnh thêm thưởng này thưởng nọ, sao mà đếm cho hết
  • Du lịch trong nước hoài cũng chán, lâu lâu lại bay ra nước ngoài cho thay đổi không khí
  • Bảo hiểm sức khỏe thì theo luật Nhà nước chưa đủ mà công ty thêm luật nữa là Bảo hiểm bắt buộc ở Bệnh viện FV nha, bảo hiểm 1 người không chịu, cả vợ chồng con cái cho đủ bộ
  • Văn phòng thì ở Phú Mỹ Hưng, khu biệt thự cao cấp
  • Lỡ mà ở Hà Nội hay Đà Nẵng chưa có chỗ ở Hồ Chí Minh, thì công ty cũng “mát tay” đài thọ cho chi phí nhà ở quận 7 luôn nhé, con cái có phải chuyển trường hay vợ chồng chuyển công tác thì có công ty lo, không phải đắn đo

Nói chung là sướng như tiên đó! 

Muốn sống cuộc sống “tiên bổng” này thì apply ngay tại đây nhé, Trust Circle đang rất cần bạn!

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à.

Tác giả: Quang Trương Tuấn

Techtalk via Vibloasia

CHIA SẺ