正在将Linkedin学习视频源导出到.txt文件



我对python和编程都很陌生。

我正在尝试抓取一个LinkedIn学习网页,以定位该页面上视频的完整文件路径。

理想情况下,我希望脚本能够接受课程url,并循环浏览课程中的每个视频,从课程中的每一个视频页面提取视频文件路径。

通过审查来源,我发现我感兴趣的领域如下:

<div> data-vjs-player etc etc </div>

在这个div中,有一个视频元素。在这个元素中,是一个src callout,它包含我正在寻找的视频链接,例如:

<video id="vjs_video_3_html5_api" class="vjs-tech" preload="auto" poster="https://media-exp1.licdn.com/dms/image/C4E0DAQEEM3rME8wwFw/learning-public-crop_675_1200/0?e=1595858400&amp;v=beta&amp;t=V5KkqHuGqUTliAMbL7oUBXeEWcrfBDdi4QrZbyGyAWE" src="https://files3.lynda.com/secure/courses/614299/VBR_MP4h264_main_HD720/614299_00_02_XR15_exfiles.mp4?0pnG4-hMq6_WSlXmJvkGQa6ubLk5EIuE8SG-D0jd9RJOztR5jY8wmlBcsWjHLzBK22z6DydJXGoV8njYeJ_A-dMb6BIZrtkZdUq20t2tD6hxhdNKeWVvik7aOfN3Oyv78_wqePFK1rGmujQnzbCYudW9r0Oyl54EcFQhUqUFnGpkVqHLgQ_Gndo"></video>

我试图利用以下代码作为基础,遵循BeautifulSoup教程来解析src callout的网站链接:

from bs4 import BeautifulSoup
from lxml import html
import requests
URL = 'https://www.linkedin.com/learning/python-essential-training-2/about-python-3?u=2154233'
page = requests.get(URL)
soup = BeautifulSoup(page.content, 'html5lib')
results = soup.find(id="vjs_video_3_html5_api")
print(results.prettify())

然而,正是在这一点上,我陷入了停滞,因为我不知道该去哪里,尽管目前我已经尽了最大的能力来研究这个问题。

我真的很感激你能在这方面提供任何帮助或指导。

提前谢谢大家。

当您查看源HTML(例如print(soup)(时,您会发现<video>标记的类是不同的。

您可以使用以下示例提取视频url:

import json
import requests
from bs4 import BeautifulSoup

url = 'https://www.linkedin.com/learning/python-essential-training-2/about-python-3?u=2154233'
soup = BeautifulSoup(requests.get(url).content, 'html.parser')
data = json.loads(soup.video['data-sources'])
print(data[0]['src'])

打印:

https://files3.lynda.com/secure/courses/614299/VBR_MP4h264_main_SD/614299_00_03_XR30_aboutpy.mp4?jNwDi0oWUMSPUqh0j6w7yy2IDyBgoGZEeY9Tj2TKVmZmpSMisIoXxG9K1BbRELSP_pM9ySZOFiOq6TzNFvxhEWoGujEGQYT7TfRhuXGwJyGffd5uWTdYBCoc65J-YJuvdg7xijnaDwVjFuUKSAJZxqvYyq8f5nOZrE0Mgckk-1XANfovQ8E

最新更新