Python-使用网络抓取下载视频

时间:2020-05-29 03:43:48

标签: python

我正在尝试编写一个函数,该函数使用网页的url作为练习的参数来下载视频。我基本上有两个问题。

首先: 我无法使用以下代码找到iframe源,以便在Python中切换到该源。有什么原因或我想念的东西吗?

import requests
from bs4 import BeautifulSoup

url = 'https://fmovies.wtf/film/adventures-of-rufus-the-fantastic-pet.72o71'

r = requests.get(url)
soup = BeautifulSoup(r.content,'html.parser')

soup.find_all('iframe')

第二: 在Google Chrome浏览器上浏览网站的html时,我也找不到用于下载视频的视频源。如果您可以建议我所缺少的内容,以便找到可以正常工作的代码的视频网址,那将是一个很大的帮助:

import requests

def download_file(video_url):

    local_filename = 'potatoes.mp4'

    r = requests.get(url, stream=True)
    with open(local_filename, 'wb') as f:
        for chunk in r.iter_content(chunk_size=1024): 
            if chunk: # filter out keep-alive new chunks
                f.write(chunk)

    return local_filename

download_file(**THIS IS WHERE THE VIDEO_URL WOULD GO**)

如果我对这个方向还很陌生,请向我提供正确的指导。

1 个答案:

答案 0 :(得分:0)

如果您查看页面view-source:https://fmovies.wtf/film/adventures-of-rufus-the-fantastic-pet.72o71的源代码(将其复制并粘贴到Chrome地址栏中),则会看到Source中没有iframe,因此很可能会被javascript渲染为DOM运行。

使用requests只能获得服务端渲染的源(我在上面共享的链接),并且由于iframe不是由服务器bs4呈现的,因此无法找到它!

您应该怎么做?转到基于Selenium的Web爬网或在“网络面板”中进行挖掘,以查看是否可以找到获取iframe网址的任何API请求或将iframe呈现为DOM的任何代码。

TLDR;您无法使用requests库抓取客户端渲染的元素。