我正在尝试编写一个函数,该函数使用网页的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**)
如果我对这个方向还很陌生,请向我提供正确的指导。
答案 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
库抓取客户端渲染的元素。