Trong một trong những hướng dẫn trước đây của chúng tôi, chúng tôi đã học cách tải xuống video từ YouTube. Chúng tôi đã sử dụng một thư viện tùy chỉnh có tên là pytube3 cho nó. Nhưng nếu chúng ta muốn tải xuống video bằng python từ bất kỳ trang web nào khác thì sao?
Vì vậy, để tải xuống video từ bất kỳ trang web nào, chúng tôi sẽ phải sử dụng thư viện quét web của bạn BeautifulSoup và Yêu cầu. Trong hướng dẫn này, chúng tôi sẽ tìm hiểu cách chúng tôi có thể tải xuống video từ bất kỳ trang web nào bằng kỹ năng quét web của mình
Chúng tôi sẽ truy cập trang web của Đại học Munich và tải xuống các video. Trang web này chứa video cũng như một số tệp pdf và các tệp khác, chúng tôi sẽ chỉ tải xuống video.
Nếu để ý kỹ các bạn có thể thấy tất cả các video đều có đuôi mp4, đây chính là thứ chúng ta phải đi tìm. Ngoài ra, tất cả các tệp đều có một liên kết được nhúng từ nơi chúng có thể được tải xuống. Chúng tôi có thể tìm thấy tất cả các liên kết này và sau đó tải xuống các tệp
Hãy lấy mã
import requests
from bs4 import BeautifulSoup
# specify the URL of the archive here
archive_url = "//www-personal.umich.edu/~csev/books/py4inf/media/"
def get_video_links[]:
#create response object
r = requests.get[archive_url]
#create beautiful-soup object
soup = BeautifulSoup[r.content,'html5lib']
#find all links on web-page
links = soup.findAll['a']
#filter the link ending with .mp4
video_links = [archive_url + link['href'] for link in links if link['href'].endswith['mp4']]
return video_links
Bây giờ chúng tôi đã lấy được các liên kết, chúng tôi có thể gửi yêu cầu nhận các liên kết này và tải xuống video như bên dưới
def download_video_series[video_links]:
for link in video_links:
# iterate through all links in video_links
# and download them one by one
#obtain filename by splitting url and getting last string
file_name = link.split['/'][-1]
print ["Downloading file:%s"%file_name]
#create response object
r = requests.get[link, stream = True]
#download started
with open[file_name, 'wb'] as f:
for chunk in r.iter_content[chunk_size = 1024*1024]:
if chunk:
f.write[chunk]
print ["%s downloaded!\n"%file_name]
print ["All videos downloaded!"]
return
if __name__ == "__main__":
#getting all video links
video_links = get_video_links[]
#download all videos
download_video_series[video_links]
đầu ra
Bạn có thể tìm thấy các video đã tải xuống trong thư mục làm việc của mình. Biết thêm cách tải video bằng python từ website
Chúng tôi cũng có thể tải xuống video chất lượng cao nhất hoặc thấp nhất từ youtube bằng cách sử dụng chức năng 'get_highest_resolution[]' hoặc 'get_lowest_resolution[]'
Để có chất lượng cao nhất, chúng tôi phải sử dụng
# To download Highest Quality Video from YouTube Yvideo.get_highest_resolution[].donwload['~/Downloads']
Và, đối với chất lượng thấp nhất, chúng tôi phải sử dụng
# To download Lowest Quality Video from YouTube Yvideo.get_lowest_resolution[].donwload['~/Downloads']
Tải xuống video YouTube bằng Django
Django là khung web cấp cao của python với sự phát triển nhanh chóng và rõ ràng
Cách tạo công cụ YouTube Downloader. Đầu tiên, bạn phải tải xuống và cài đặt Django
Sau khi cài đặt Django, chúng tôi phải tạo một tệp html nơi người dùng có thể dán URL và có thể tải xuống video
Chúng tôi sẽ sử dụng phương thức POST trong Dự án này sẽ cung cấp cho chúng tôi URL được viết trên thẻ HTML một cách an toàn và để sử dụng phương thức POST, chúng tôi cũng sẽ cần mã thông báo csrf
mục lục. html
YT_DownloaderDownload Youtube Video
{% csrf_token %}
Sau khi tạo tệp html, chúng ta phải tạo tệp Python sẽ nhận URL và tải xuống video từ YouTube
lượt xem. py
from django.shortcuts import render from pytube import * # Create your views here. def index[request]: if request.method == 'POST': link = request.POST['y_url'] vid = YouTube[link] Yvideo = vid.streams.filter[file_extension='mp4', progressive=True].order_by['resolution'].desc[] Yvideo.first[].download['~/Downloads'] return render[request, "index.html"]
Và cuối cùng, chúng ta phải chỉ định Đường dẫn URL
url. py
from django import views from django.urls import path from . import views urlpatterns= [ path["index", views.index, name="index"] ]
Và sau đó, bạn chỉ cần chạy dự án bằng cách sử dụng “python manage. py runserver” trong thiết bị đầu cuối hoặc dấu nhắc lệnh