视频下载工具 (python爬虫和wxpython实现)

本工具是用python语言实现功能,wxPython实现界面,pyinstaller打包成的电脑软件。

软件已经全部上传 我的gitee库 ,可自行下载使用。


目录

一、图片展示

1.界面展示

2.实现效果展示

二、部分代码展示

1.需要的包 

2.网页地址的重定向

3.爬虫实现视频获取(部分展示)

4.wxPython实现界面


一、图片展示

1.界面展示:

视频下载工具 (python爬虫和wxpython实现)_第1张图片

2.实现效果展示:

 视频下载工具 (python爬虫和wxpython实现)_第2张图片

视频下载工具 (python爬虫和wxpython实现)_第3张图片

二、部分代码展示

1.需要的包 

import base64
import os
import wx
import requests
import re

注:其中wx 是wxPython包,下载使请用 pip3 install wxPython ,而不是pip3 install wx。

2.网页地址的重定向

import re
import requests


# 丰富了输入样式,可以纯网址  也可以分享链接  提取网址
def getrightUrl(text):
    url = re.search("(?Phttps?://[^\s]+)", text).group("url")
    return UrlRedirct(url)


# 获得真实 重定向后的网址
def UrlRedirct(url, try_count=1):
    http_headers = {'Accept': '*/*', 'Connection': 'keep-alive',
                    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
                                  'Chrome/105.0.0.0 '
                                  'Safari/537.36 Edg/105.0.1343.27 '}
    if try_count > 3:
        return url
    try:
        rs = requests.get(url, headers=http_headers, timeout=10)
        if rs.status_code > 400:
            return get_real_url(url, try_count + 1)
        return rs.url
    except:
        return get_real_url(url, try_count + 1)

3.爬虫实现视频获取(部分展示)

import requests
import re


def getHtml_response(url):
    # 伪装请求头方式/请求头参数
    headers = {
        'cookie': '',
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
                      'Chrome/104.0.5112.102 Safari/537.36 Edg/104.0.1293.70 '
    }
    i = 0
    while i < 3:
        try:
            response = requests.get(url=url, headers=headers, timeout=1)
            return response
        except requests.exceptions.RequestException:
            i += 1


def getTitle(url):
    response = getHtml_response(url)
    title = re.findall('(.*?)', response.text, re.S)[0]
    title = title.replace(' ', '_')
    title = title.replace('\n', '_')
    return response.text, title


def getVideo(text, title):
    href = re.findall('playAddr%22%3A%5B%7B%22src%22%3A%22(.*?)%22%7D%2C%7B%22src%22%3A%22%2F%2Fv3-web', text)[
        0]
    # print(href)
    video_url = requests.utils.unquote(href)
    video_url = 'https:' + video_url
    # 获取视频的二进制数据
    video_content = getHtml_response(video_url).content
    # 保存数据
    with open('video\\' + title + '.mp4', mode='wb') as f:
        f.write(video_content)
    return '视频下载成功!!!'

4.wxPython实现界面

import os

import wx



if __name__ == '__main__':
    app = wx.App()
    frame = wx.Frame(None, -1, "视频下载器", size=(600, 500))
    panel = wx.Panel(frame)
    icon = wx.Icon(name='pic1.jpg', type=wx.BITMAP_TYPE_ICO)
    frame.SetIcon(icon)

    vi = ['bX', '抖X', '快X']
    select_one = wx.Choice(panel, -1, choices=vi, style=wx.CB_SORT)
    url_text = wx.TextCtrl(panel)
    clear_button = wx.Button(panel, label="清空输入框")
    clear_button.Bind(wx.EVT_BUTTON, clear_url_text)

    save_button = wx.Button(panel, label="确认下载")
    save_button.Bind(wx.EVT_BUTTON, downlord)
    content_text = wx.TextCtrl(panel, -1, '输入视频网址,选择平台,再下载.....   '
                                          '(视频过大可能会显示未响应,稍等一下就行)', style=wx.TE_MULTILINE)
    font = content_text.GetFont()
    font.PointSize += 2
    font = font.Bold()
    content_text.SetFont(font)
    box = wx.BoxSizer()  # 不带参数表示默认实例化一个水平尺寸器
    box.Add(url_text, proportion=6, flag=wx.ALIGN_CENTER_VERTICAL | wx.ALL, border=1)  # 添加组件
    box.Add(select_one, proportion=1, flag=wx.ALIGN_CENTER_VERTICAL | wx.ALL, border=1)  # 添加组件
    box.Add(clear_button, proportion=1, flag=wx.ALIGN_CENTER_VERTICAL | wx.ALL, border=1)  # 添加组件
    box.Add(save_button, proportion=1, flag=wx.ALIGN_CENTER_VERTICAL | wx.ALL, border=1)  # 添加组件

    b_button = wx.Button(panel, label="请勿运用于商用!")

    v_box = wx.BoxSizer(wx.VERTICAL)  # wx.VERTICAL参数表示实例化一个垂直尺寸器
    v_box.Add(box, proportion=1, flag=wx.EXPAND | wx.ALL, border=0)  # 添加组件
    v_box.Add(content_text, proportion=13, flag=wx.EXPAND | wx.ALL, border=0)  # 添加组件
    v_box.Add(b_button, proportion=1, flag=wx.EXPAND | wx.ALL, border=0)  # 添加组件
    panel.SetSizer(v_box)
    os.remove(".\\pic1.jpg")
    frame.Show(True)
    app.MainLoop()

软件我已经上传我的gitee 库 ,可自行下载使用。因为是用爬虫写的,具有时效性。如果遇到软件无法使用,请在本篇博客留言评论,我及时更新。

如果觉得有用就点个赞吧!!!视频下载工具 (python爬虫和wxpython实现)_第4张图片

 

你可能感兴趣的:(wxpython,python,爬虫,开发语言)