python爬视频错误




        # 控件内容设置
        group = tk.lable(frame_1, text='请选择一个视频破解方式:',padx=10,pady=10)
        tb1 = tk.Radiobutton(frame_1,text='通道一',variable=self.v,value=1,width=10,height=3)
        tb2 = tk.Radiobutton(frame_1,text='通道二',variable=self.v,value=2,width=10,height=3)
        tb3 = tk.Radiobutton(frame_1,text='通道三',variable=self.v,value=3,width=10,height=3)
        lable1 = tk.lable(frame_2,text="请输入视频链接=")
        entry = tk.Entry(frame_2,textvariable=self.url,highlightcolor='Fuchsia',highlightthickness=1,width=35)
        lable2 = tk.lable(frame_2,text=" ")
        play = tk.Button(frame_2,text="播放",font=('楷体',12),fg='Purple',width=2,height=1,
                         command=self.video_play)
        lable3 = tk.table(frame_2,text=" ")
        lable_expplain = tk.lable(frame_3,fg='red',font=('楷体',18),
                                  text='\n注意:\n此工具只能用于观看和学习\n详情联系2478363166!')
        lable_warning = tk.lable(frame_3,fg='black',font=('楷体',16), text='\n\n')

        # 控件布局
        frame_1.pack()
        frame_2.pack()
        frame_3.pack()
        group.grid(row=0,column=0)
        tb1.grid(row=0,column=1)
        tb2.grid(row=0,column=2)
        tb3.grid(row=0,column=3)
        lable1.grid(row=0,column=0)
        entry.grid(row=0,column=1)
        lable2.grid(row=0,column=2)
        play.grid(row=0,column=3,ipadx=10,ipady=10)
        lable3.grid(row=0,column=4)
        lable_expplain.grid(row=1,column=0)
        lable_warning.grid(rwo=2,column=0)

    """
    函数说明:视频播放
    """

    def video_paly(self):
        # 视频解析网站地址
        # port_1 = 'http://jx.618g.com/?url='
        port_1 = 'http://jx.quanmingjiexi.com/?url='
        port_2 = 'http://www.wmxz.wang/video.php?url='
        port_3 = 'http://www.ckmov.vip/aip.php?url='

        # 正则表达是否判定为合法链接
        if re_match(r'^https?:/{2}\w.+$',self.url.get()):
            if self.v.get() ==1:
                # 视频链接获取
                ip = self.url.get()
                # 视频链接加密
                ip = parser.quote_plus(ip)
                # 浏览器打开
                webbrowser.open(port_1 + self.url.get())
            elif self.v.get() ==2:
                # 链接获取
                ip = self.url.get()
                # 链接加密
                ip = parser.quote_plus(ip)
                # 获取time,key,url
                get_url = 'http://www.wmx.wang/video.php?url=%s' % ip
                # 请求之后立即打开
                webbrowser.open(get_url)
            elif self.v.get() ==3:
                # 链接获取
                ip = self.url.get()
                # 链接加密
                ip = parser.quote_plus(ip)
                # 获取time,key,url
                get_url = 'http://ckmov.vip/api.php?url=%s' % ip
                # 请求之后立即打开
                webbrowser.open(get_url)

        else:
            msgbox.showerror(title='错误',message='视频链接地址无效,请重新输入!')

    """
    函数说明:tkinter窗口居中
    """

    def center(self):
        ws = self.boot.winfo_screenwidth()
        hs = self.boot.winfo_screenheight()
        x = int((ws / 2) - (self.w /2))
        y = int((hs / 2) - (selc.h /2))
        self.root.geometry('{}x{}+{}+{}'.format(self.w, self.h,x,y))

    """
    函数说明:loop等待用户事件
    """

    def loop(self):
        self.root.resizable(False, False)
        # 窗口居中
        self.center()
        self.root.mainloop()

if __name__ == '__main__':
    app = APP()
    app.loop()

上一个音乐问题已经解决!谢谢,
爬取视频运行时候说我最后面APP对象没有root,实在解决不了了。


```python

Traceback (most recent call last):
  File "F:\pychrom文件\pythonProject1\VIP TV.py", line 146, in 
    app.loop()
  File "F:\pychrom文件\pythonProject1\VIP TV.py", line 139, in loop
    self.root.resizable(False, False)
AttributeError: 'APP' object has no attribute 'root'

Process finished with exit code 1
```python

方案来自 梦想橡皮擦 狂飙组基于 GPT 编写的 “程秘”


代码中没有找到创建名为root的窗口,只有boot、frame_1、frame_2、frame_3等其他窗口,因此在 loop() 函数中尝试调用 self.root.resizable(False, False) 时,Python 解释器会引发 AttributeError,因为 self.root 未定义。

建议检查一下代码,以确保正确创建和定义窗口。 例如,在创建 boot 窗口时,可以在下面添加一行将 boot 命名为 root:

self.root = boot

这样就可以在 loop() 函数中访问 self.root 而不是引发 AttributeError 异常。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^