Hướng dẫn tự code 1 tool tải file từ URL bằng Python
import requests
url = 'https://gloomyhackingteam.blogspot.com/favicon.ico'
r = requests.get(url, allow_redirects=True)Đoạn code trên bạn có dịch được nó không ạ? Nó là một đoạn code được sử dụng để download icon của chính blog này và lưu lại nó với tên là "gloomy.ico"
open('gloomyblog.ico', 'wb').write(r.content)
Okay bắt đầu với những thứ khác nào!
Tớ sẽ bắt đầu với một video trên Youtube nhé, chính là track "Ngày Tàn" của DSK và đây là url của nó: https://www.youtube.com/watch?v=mdSMdS0sUIY
We have a problem here ~~
Nếu tớ dùng đoạn code trên để tải xuống video này thì nó sẽ tải cả một trang HTML xuống máy của tớ, quá bất tiện, tớ chỉ muốn cái video này thôi vậy...
Để giải quyết vấn đề này, những gì tớ làm là kiểm tra tiêu đề của URL. Tiêu đề thường chứa một tham số Content-Type cho biết loại dữ liệu mà url đang liên kết tới.
Lại thêm 1 vấn đề nữa đó chính là code hoạt động ...nhưng không phải là cách tối ưu để làm cho nó hoạt động tốt vì nó liên quan đến việc tải tập tin để kiểm tra tiêu đề.
r = requests.get(url, allow_redirects=True)
print r.headers.get('content-type')
Vì vậy, nếu tập tin có dung lượng lớn sẽ gây lãng phí băng thông.
Gỉai quyết cho xong nó nào:
import requests
def is_downloadable(url):
"""
Does the url contain a downloadable resource
"""
h = requests.head(url, allow_redirects=True)
header = h.headers
content_type = header.get('content-type')
if 'text' in content_type.lower():
return False
if 'html' in content_type.lower():
return False
return True
print is_downloadable('https://www.youtube.com/watch?v=mdSMdS0sUIY')
# >> FalseChúc anh em thành công, nếu không hiểu thì cứ copy code ở dưới cùng mà dùng nhé!!!
print is_downloadable('http://gloomyhackingteam.blogspot.con/favicon.ico')
# >> True
No comments: