寻找有关如何开始我的第一个编程项目的帮助



步骤1:打开Google Chrome to Chess.com网站

步骤2:通过主页登录到我的帐户

步骤3:将鼠标光标悬停在网页左侧的横幅上的大"学习"按钮上。这将扩展到另一个菜单。

步骤4:在弹出的此菜单上,我将单击"视频"的按钮,该按钮将导航到此URL:" https://www.chess.com/videos"

步骤5:然后,我单击"库"按钮将我带到:" https://www.chess.com/videos/library"

步骤6:我通过单击标题链接打开一个特定的视频(在列表中的许多视频中)。

这就是列表的样子:
https://photos.app.goo.gl/vsxhqh5siiggmmoja

步骤7:在新页面上,视频播放器处于清晰的视线状态,我右键单击,然后检查元素 - 以便输入Chrome开发工具像这样:https://photos.app.goo.gl/96ygytfla58mhsmp7

步骤8:然后,我单击开发工具框左上角的"指针箭头"按钮。

步骤9:然后我在视频播放器上"选择"以突出显示。

cf。这个图片:https://photos.app.goo.gl/6wslfezmcbjvjthj9

步骤10:

然后,我打开出现在"元素"选项卡中的.mp4链接,因此将打开一个新选项卡,该选项卡仅包含屏幕上的视频播放器

步骤11(最后一步):然后,我单击右下角的按钮,然后选择"下载"以获取.mp4文件。

cf。此图像:https://photos.app.goo.gl/gdmxwmnbswbcq4lp8

我发现从这样的网站下载所有嵌入式视频的过程非常繁琐,因为我实际上必须打开一个新视频才能有机会下载它。

因此,我正在考虑将我的第一个项目作为一个完整的新手程序员(以保持动力!),以尝试编程可以自动化此过程的东西。

我的问题是:是否有可能自动化我上面说明的这种算法(也许有某种机器人或网络爬网),以及我应该学到哪些主题以发展技能,以便做什么必要的?

非常感谢您的帮助!我非常感谢:)

我意识到您可能不是在寻找代码解决方案,但是我包含了可以用于灵感的一个。它将所有视频下载到目录" Chessvideos"中(请注意,每个视频都有123页,每个视频上都有约25个视频,因此要花很长时间才能完成)。

构建这样的webcrawler是一个过程。知道您可以使用requests获取URL的HTML,并且您可以"查询" DOM使用BeautifulSoup查找元素,打开浏览器并在问题中提到的检查。例如,您应该寻找哪些HTML属性?类,ID,标签等此过程的一部分也是要意识到系统将如何响应您的请求,例如您提到的登录 - 这通常是一个要求,但实际上并不是这个网站,因此问题要简单得多。希望它有些用。

import requests
from bs4 import BeautifulSoup
import os
class ChessDownloader():
    download_directory = os.path.join(os.path.dirname(os.path.realpath(__file__)), "chessvideos")
    def __init__(self):
        res = requests.get("https://www.chess.com/videos/library")
        if res.status_code == 200:
            b = BeautifulSoup(res.text, features='html5lib')
            a = b.find('a', text='Last').get('href')
            pages = int(a.replace('https://www.chess.com/videos/library?page=', '')) # get the number of pages using the "Last" button
            for i in range(pages):
                self.download_videos_from_page(i)
    def download_videos_from_page(self, page_number):
        if page_number == 0:
            res = requests.get('https://www.chess.com/videos/library')
        else:
            res = requests.get('https://www.chess.com/videos/library?page=' + str(page_number))
        if res.status_code == 200:
            b = BeautifulSoup(res.text, features='html5lib')
            links = b.find_all('a', { 'class' : 'content-image' })
            links = [a.get('href') for a in links]
            for link in links:
                r = requests.get(link)
                if r.status_code == 200:
                    b = BeautifulSoup(r.text, features='html5lib')
                    video_url = b.find('meta', {'property': 'og:video:secure_url'}).get('content')
                    self.download_video(video_url)
    def download_video(self, url):
        if not os.path.exists(self.download_directory):
            os.mkdir(self.download_directory)
        res = requests.get(url)
        if res.status_code == 200:
            name = url.rsplit('/', 1)[-1]
            file_path = os.path.join(self.download_directory, name)
            if not os.path.exists(file_path): # Dont download if we already have it
                with open(file_path, 'wb+') as f:
                    f.write(res.content)
c = ChessDownloader()

相关内容

最新更新