Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 网页抓取视频_Python_Video_Screen Scraping - Fatal编程技术网

Python 网页抓取视频

Python 网页抓取视频,python,video,screen-scraping,Python,Video,Screen Scraping,我正试图通过下载一集Bob's Burgers的电视剧来验证这个概念 我不知道如何从这个网站提取视频url。我使用Chrome和Firefox web developer工具来确定它在iframe中,但通过BeautifulSoup搜索iframe来提取src URL,会返回与视频无关的链接。mp4或flv文件的引用在哪里(我在开发人员工具中看到了这些文件,尽管单击它们是被禁止的) 如果您了解如何使用BeautifulSoup进行视频网络抓取,并提出请求,我们将不胜感激 如果需要,这里有一些代码

我正试图通过下载一集Bob's Burgers的电视剧来验证这个概念

我不知道如何从这个网站提取视频url。我使用Chrome和Firefox web developer工具来确定它在iframe中,但通过BeautifulSoup搜索iframe来提取src URL,会返回与视频无关的链接。mp4或flv文件的引用在哪里(我在开发人员工具中看到了这些文件,尽管单击它们是被禁止的)

如果您了解如何使用BeautifulSoup进行视频网络抓取,并提出请求,我们将不胜感激

如果需要,这里有一些代码。很多教程都说要使用“A”标记,但我没有收到任何“A”标记

import requests
from bs4 import BeautifulSoup

r = requests.get("https://www.watchcartoononline.com/bobs-burgers-season-9-episode-5-live-and-let-fly")
soup = BeautifulSoup(r.content,'html.parser')
links = soup.find_all('iframe')
for link in links:
    print(link['src'])
这段代码将把这一集下载到你的电脑上。视频url嵌套在
标记中的
标记内。

背景信息 (向下滚动以获取答案) 只有当您试图从中获取视频格式的网站在HTML中明确声明时,才能轻松获得该格式。例如,如果您希望通过引用.mp4 URL从您选择的站点获取一个.mp4文件,那么如果我们在这里使用此站点<代码>https://4anime.to/yakunara-mug-cup-mo-episode-01-1?id=45314如果我们在inspect元素中查找

现在,如果我们试图像这样从这个网站获取.mp4 URL

/inc/embed/embed.php?file=bobs.burgers.s09e05.flv&amp;hd=1&amp;pid=437035&amp;h=25424730eed390d0bb4634fa93a2e96c&amp;t=1618011716&amp;embed=cizgi
导入请求
从bs4导入BeautifulSoup
html_url=”https://4anime.to/yakunara-mug-cup-mo-episode-01-1?id=45314"
html\u response=requests.get(html\u url)
soup=BeautifulSoup(html\u response.text,'html.parser')
对于汤中的mp4。查找所有(“视频”):
mp4=mp4['src']
打印(mp4)
我们将得到一个
KeyError:'src'
输出。这是因为实际视频存储在
source
中,如果我们打印出
soup中的值,就可以查看该视频。查找所有('video')

导入请求
从bs4导入BeautifulSoup
html_url=”https://4anime.to/yakunara-mug-cup-mo-episode-01-1?id=45314"
html\u response=requests.get(html\u url)
soup=BeautifulSoup(html\u response.text,'html.parser')
对于汤中的mp4。查找所有(“视频”):
通过
打印(mp4)
输出:

<video class="video-js vjs-default-skin vjs-big-play-centered" controls="" data-setup="{}" height="264" id="example_video_1" poster="" preload="none" width="640">
<source src="https://mountainoservo0002.animecdn.com/Yakunara-Mug-Cup-mo/Yakunara-Mug-Cup-mo-Episode-01.1-1080p.mp4" type="video/mp4"/>
</video>
(显然,您可以通过手动复制源代码的
src
并将其用作基本URL而不必使用
html\u URL
来简化此过程。我只是想告诉您,您可以选择引用.mp4(也称源代码的
src

再说一次,并非每个网站都是如此明确。特别是对于这个网站,我们很幸运,它是可管理的。您可能试图从中获取视频的其他网站可能需要您从
元素
(在inspect元素中)转到
网络
。在那里,你必须尝试获取嵌入链接的片段,并尝试下载它们来制作完整的视频,但同样,并不总是那么容易,但是你请求的站点的视频是。

你的回答 转到inspect元素,单击位于视频顶部的
Chromecast Player(2.Player)
以查看HTML属性,最后单击嵌入,该嵌入应如下所示

/inc/embed/embed.php?file=bobs.burgers.s09e05.flv&amp;hd=1&amp;pid=437035&amp;h=25424730eed390d0bb4634fa93a2e96c&amp;t=1618011716&amp;embed=cizgi
完成此操作后,单击播放,确保inspect元素已打开,单击视频以查看属性(或ctrl+f以筛选
)并复制应显示的src

https://cdn.cizgifilmlerizle.com/cizgi/bobs.burgers.s09e05.mp4?st=f9OWlOq1e-2M9eUVvhZa8A&e=1618019876

现在我们可以用python下载它了

导入请求
#--此模块帮助将信息从一个文件传输到另一个文件
进口舒蒂尔
url=”https://cdn.cizgifilmlerizle.com/cizgi/bobs.burgers.s09e05.mp4?st=f9OWlOq1e-2M9eUVvhZa8A&e=1618019876“
response=requests.get(url,stream=True)
如果response.status_code==200:
#--确保文件大小不是0
response.raw.decode_content=True
以open('bobs-burgers.mp4','wb')作为f:
#--从response.raw获取数据并将其传输到文件
shutil.copyfileobj(response.raw,f)
打印('下载的文件')
其他:
打印('下载失败')

在标签中获取视频源。我在您的示例中发现了这一点:然后您可以使用带有stream=true参数的python请求,就像它的可能副本一样,它确实保存了一个以您的函数命名的文件,但它是无效的,只有162字节。为什么beautifulsoup找不到视频和源标签?我甚至找不到包含bs4扩展名mp4的url,或者只是搜索请求响应文本/内容。