首页 > 其他分享 ># 爬虫应用 # 可视化窗口加爬虫 # 音频 # 批量 # tkinter #DrissionPage

# 爬虫应用 # 可视化窗口加爬虫 # 音频 # 批量 # tkinter #DrissionPage

时间:2024-11-09 22:14:46浏览次数:5  
标签:tkinter list 爬虫 获取 window video tk DrissionPage div

所用工具:pycham

所需库:re,requests,tkinter,DrissionPage

应用场景:DOUYING-PI-LIANG-HUA-CAI-JI   和  DAN-GE-CAI-JI

在代码运行前确保库都导入完全和图片的下载;和图片路径正确;把下面图片下载,之后查看其路径,然后把源代码上的路径替换。

img = tk.PhotoImage(file="D:\\01PYTHON\python\案例\\192_192.png")  # 读取图片

以下代码是在前几篇文章基础上建立的。所以今天作者很累就不讲了。直接看代码和运行结果。

注意:复制代码后需要填写cookie和user-agent,怎么填写前几篇文章都有介绍,就不讲了

运行之后会出现:

单个获取就是一个一个的获取,相应链接是视频详细页面的链接;一般都是这样

就是在视频点击鼠标左键进入详细页面

 

输入链接后,点击获取视频就会下载视频

多个获取就是多个获取,选择2号选项多个获取,输入链接,就是DY作者主页面的链接;一般就是以下样子,输入获取视频即可,我限制的只能获取7个视频,想要获取更多,就需要修改:

for i in range(1, 8):

8-1=7   增加8即可。 

 

 此代码对于短小视频还可以,对于长视频或许还有些欠缺。会继续改进。

以下为我的运行结果 

import re
import requests
import tkinter as tk
from DrissionPage import ChromiumPage
url_list = []
video_list = []
title_list = []

headers = {
    "cookie":
        "填写自己的身份信息",
    "user-agent":
        "填写自己的设备信息",
     "referer":
        "https://www.douyin.com"
}

# 创建窗口
window = tk.Tk()
window.geometry('800x400+400+200')
# 创建窗口题目
window.title('获取抖音视频:')
# 在窗口上放置图片
img = tk.PhotoImage(file="D:\\01PYTHON\python\案例\\192_192.png")  # 读取图片
tk.Label(window, image=img).pack(fill='both', pady=10)   # 放置到window上 充满标签 上下距离为10

# 设置选项单个爬取还是多个爬取
# 设置标签框
choices_frame = tk.LabelFrame(window)
choices_frame.pack(fill='both', pady=10)
# 标签框内容
tk.Label(choices_frame, text='选择单个获取还是多个获取:', font=('黑体', 15)).pack(side=tk.LEFT)  # side=tk.LEFT向左靠齐
# 设置选项
# 设置可变变量为整形
num_int_var = tk.IntVar()  # 为整型这句要有没有的话会选中多个选项
# 设置默认选项
num_int_var.set(1)
tk.Radiobutton(choices_frame, text='1.单个获取', variable=num_int_var, value=1).pack(side=tk.LEFT, padx=50)
tk.Radiobutton(choices_frame, text='2.多个获取', variable=num_int_var, value=2).pack(side=tk.LEFT, padx=50)  # 设置按钮为整形,变量为2,向左靠齐间距为50

# 设置输入标签
input_frame = tk.LabelFrame(window)
input_frame.pack(fill='both', pady=10)
# 输入标签文本
input_va = tk.StringVar()
tk.Label(input_frame, text='输入视频获取链接:', font=('黑体', 15)).pack(side=tk.LEFT)
tk.Entry(input_frame, relief='flat', textvariable=input_va, width=200).pack(side=tk.LEFT, fill='both')  # 按钮更平滑 输入类型为字符串类型,宽度为200

def show():
    num = num_int_var.get()   # 获取单个按钮选项值
    url = input_va.get()    # 获取输入字符串值
    if num == 1:
        ChromiumPage().get(url)
        txt = ChromiumPage().ele('x://*[@id="douyin-right-container"]/div[2]/div/div/div[1]/div[2]/div/xg-video-container/video/source[3]')   # 获取网址元素,xpath定位视频链接位置
        title = ChromiumPage().ele('x:/html/head/title').text
        video_x = re.findall("<ChromiumElement source class='' src='(.*?)' type=''>", str(txt))[0]   # 正则化提取视频链接位置,取出第一个链接
        video_url = 'https:'+video_x
        with open(f'{title}.mp4', mode='wb') as f:
            f.write(requests.get(video_url, headers=headers).content)
    elif num == 2:
        ChromiumPage().get(url)
        for i in range(1, 8):
            m_video_x = ChromiumPage().ele(f'x://*[@id="douyin-right-container"]/div[2]/div/div/div/div[3]/div/div/div[2]/div[2]/div[2]/ul/li[{i}]/div/a')
            m_video_c = re.findall("<ChromiumElement a href='(.*?)'", str(m_video_x))[0]
            m_video = 'https://www.douyin.com'+m_video_c+'?modeFrom='
            url_list.append(m_video)
            print(url_list)
        for j in url_list:
            ChromiumPage().get(j)
            txt = ChromiumPage().ele('x://*[@id="douyin-right-container"]/div[2]/div/div/div[1]/div[2]/div/xg-video-container/video/source[1]')
            title = ChromiumPage().ele('x://*[@id="douyin-right-container"]/div[2]/div/div/div[1]/div[3]/div/div[1]/div/h1/span/span[2]/span/span[1]/span/span/span').text
            video_c = re.findall("<ChromiumElement source class='' src='//(.*?)' type=''>", str(txt))[0]
            video_url = 'https://'+video_c
            video_list.append(video_url)
            title_list.append(title)
            print(video_list)
            print(title_list)
        for x, y in zip(video_list, title_list):
            with open(f'{y}.mp4', mode='wb') as f:
                f.write(requests.get(x, headers=headers).content)
tk.Button(window, text='获取视频', relief='flat', font=('黑体', 15), command=show).pack(fill='both', pady=10)

# 窗口可持续输出
window.mainloop()

标签:tkinter,list,爬虫,获取,window,video,tk,DrissionPage,div
From: https://blog.csdn.net/2201_75495538/article/details/143652096

相关文章

  • 基于Python+django的爬虫的李宁品牌销售数据分析系统设计与实现(源码+文档+部署讲解等
    课题简介基于Python+django的爬虫的李宁品牌销售数据分析系统是企业了解市场表现、优化销售策略的有力工具。系统的爬虫部分能够从多个电商平台、官方销售网站等渠道收集李宁品牌产品的销售数据,包括商品名称、型号、价格、销量、销售时间、购买者地区等信息。利用Py......
  • # python # 可视化窗口 # 可应用与爬虫 # tkinter
    具有功能:创建窗口,监听窗口(可自定义打印图片-选项-按键)所需工具:pycham所需库:tkinter代码讲解:1.导入库-创建窗口-设置窗口大小-设置标题importtkinterastk#创建一个窗口root=tk.Tk()#设置窗口大小root.geometry("800x400+400+200")#注意这里使用的是英文字......
  • 最新毕设-SpringBoot-求职推荐系统-55000(免费领项目)可做计算机毕业设计JAVA、PHP、爬
    摘 要当前社会竞争激烈,求职市场信息众多,但信息不对称、筛选困难的问题依然存在。因此,设计开发一款求职推荐系统是顺应时代发展的必然选择。该求职推荐系统利用Java编程语言,使用springboot技术框架,采取MySQL数据库实现系统的各项功能,具有便捷高效、安全友好的特点,促进求职招聘......
  • 计算机毕业设计Python+图神经网络考研院校推荐系统 考研分数线预测 考研推荐系统 考研
    温馨提示:文末有CSDN平台官方提供的学长联系方式的名片!温馨提示:文末有CSDN平台官方提供的学长联系方式的名片!温馨提示:文末有CSDN平台官方提供的学长联系方式的名片!作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO......
  • 计算机毕业设计Python+图神经网络手机推荐系统 手机价格预测 手机可视化 手机数据分析
    温馨提示:文末有CSDN平台官方提供的学长联系方式的名片!温馨提示:文末有CSDN平台官方提供的学长联系方式的名片!温馨提示:文末有CSDN平台官方提供的学长联系方式的名片!作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO......
  • 基于springboot框架在线生鲜商城推荐系统 java实现个性化生鲜/农产品购物商城推荐网站
    基于springboot框架在线生鲜商城推荐系统java实现个性化生鲜/农产品购物商城推荐网站爬虫、数据分析、排行榜基于协同过滤算法推荐、基于流行度热点推荐、平均加权混合推荐机器学习、大数据、深度学习OnlineShopRecommendEx一、项目简介1、开发工具和使用技术IDEA,jdk......
  • 淘宝反爬虫机制的主要手段有哪些?
    淘宝的反爬虫机制主要有以下手段:一、用户身份识别与验证:  User-Agent识别:通过检测HTTP请求头中的 User-Agent 字段来判断请求是否来自合法的浏览器。正常用户使用不同浏览器访问时,User-Agent 会有所不同,而爬虫程序的 User-Agent 可能较为固定或具有某些特定特征。......
  • 在Scrapy爬虫中应用Crawlera进行反爬虫策略
    在互联网时代,数据成为了企业竞争的关键资源。然而,许多网站为了保护自身数据,会采取各种反爬虫技术来阻止爬虫的访问。Scrapy作为一个强大的爬虫框架,虽然能够高效地抓取网页数据,但在面对复杂的反爬虫机制时,仍然需要额外的工具来增强其反爬能力。Crawlera就是这样一款能够协助......
  • 博客园记录:汽车参数爬虫
    可以输入汽车品牌名,从而爬取对应汽车参数点击查看代码fromrandomimportrandomfrombs4importBeautifulSoupfromfake_useragentimportUserAgentfromdatetimeimporttimefromcoloramaimportForefromopenpyxlimportload_workbookfromopenpyxl.stylesimpor......
  • 同事推荐的几个高级爬虫工具,抓取网页非常快~
    在当今数据驱动的时代,自动化爬虫工具和软件成为了许多企业和个人获取数据的重要手段,特别是跨境电商、外贸等业务,对数据的需求非常大,比如对amazon、tiktok、shopee等网站数据的监测和获取。这里会介绍6款功能强大、操作简便的自动化爬虫工具,用好了可以更高效地进行数据采集,非常......