tkinter + 爬虫 实现影视在线资源系统
应吾爱朋友现公布代码如下:
import tkinter as tk
import requests,re,sys,asyncio
from tkinter import scrolledtext,END,Y,LEFT,BOTH,messagebox
import pyperclip,webbrowser class Video(object):
def __init__(self,master):
self.master = master
self.adict={}
self.bdict={}
self.initWidgets()
def initWidgets(self):
#菜单点击搜索结果复制到剪切板到浏览器
menubar = tk.Menu(self.master)
filemenu = tk.Menu(menubar,tearoff=0)
filemenu_1 = tk.Menu(menubar,tearoff=0)
menubar.add_cascade(label='关于',menu=filemenu)
filemenu.add_command(label='作者:全硕果')
menubar.add_cascade(label='帮助',menu=filemenu_1)
filemenu_1.add_command(label='操作',command=self.runing)
self.master.config(menu = menubar) tk.Label(self.master,text='影视名称:',font=('Arial,12'),width=15,height=2).place(x=0,y=10)
tk.Label(self.master,text='搜索结果:',font=('Arial,12'),width=15,height=2).place(x=0,y=50)
#结果窗口#布局窗口
frm=tk.Frame(self.master)
frm.place(x=5,y=80)
frm_1 = tk.Frame(frm)
frm_2 = tk.Frame(frm)
frm_1.pack(side='left')
frm_2.pack(side='right')
t_x = tk.Scrollbar(frm)
t_x.pack(side='right',fill=Y)
self.rest = tk.Listbox(frm,height=15,width=88,yscrollcommand=t_x.set)
# rest.place(x=10,y=80)
self.rest.pack(side=LEFT,fill=BOTH)
self.rest.bind('<Double-Button-1>',self.get_raw)
t_x.config(command=self.rest.yview)
ret = tk.StringVar()
self.e = tk.Entry(self.master,show=None,textvariable=ret,width=35)
self.e.place(x=120,y=20) lable = tk.Label(self.master,text='作者博客:https://www.cnblogs.com/xcsg/',bg='green').place(x=370,y=370)
tn = tk.Button(self.master,text='搜索',width=20,height=1,command=self.crawl).place(x=450,y=14) def runing(self):
messagebox.showinfo(title='操作', message='点击搜索结果跳转到浏览器播放') def _post(self,url, params):
res = requests.post(url, params=params)
result = res.content.decode('utf-8')
return result def get_raw(self, str,event='<Double-Button-1>') -> str:
windows = tk.Toplevel(self.master)
windows.title("播放详情")
windows.geometry('600x200+650+300')
self.t_y = tk.Scrollbar(windows)
self.t_y.pack(side='right',fill=Y)
self.s_tk = tk.Listbox(windows,height=15,width=88,yscrollcommand=self.t_y.set)
self.s_tk.pack(side=LEFT,fill=BOTH)
self.s_tk.bind('<Double-Button-1>',self.info_url_)
self.t_y.config(command=self.s_tk.yview) ret = requests.get(self.adict[self.rest.curselection()[0]])
rr = ret.content.decode('utf-8')
he = re.findall('<li><input type="checkbox" name="copy_sel" value="http://.*/share/.*?" checked="" />(.+?)</li>', rr)
if he:
for z,x in enumerate(he):
info = x.split("$")[0]+' 影片地址:'+ x.split("$")[1]
# #拷贝到剪贴板
# pyperclip.copy(x.split("$")[1])
# messagebox.showinfo(title='播放地址', message='url:%s \n已复制至剪贴板' % x.split("$")[1])
self.bdict[z] = x.split("$")[1]
self.s_tk.insert(END,info)
else:
self.s_tk.insert(END,'此影片暂无在线播放')
# tk.messagebox.showinfo(title='播放地址',message='此影片暂无在线播放') #浏览器跳转
def info_url_(self, str,event='<Double-Button-1>') -> str:
webbrowser.open(self.bdict[self.s_tk.curselection()[0]],new=0) def crawl(self):
#每次搜索清空
self.rest.delete(0,len(self.adict))
name = self.e.get()
url = 'http://www.zuidazy2.net'
result = self._post('http://www.zuidazy2.net/index.php?m=vod-search',{'wd': name})
ni = re.findall('<span class="xing_vb4"><a href="(.+?)" target="_blank">(.+?)<span>(.+?)</span></a></span> <span class="xing_vb5">(.+?)</span> <span class="xing_vb6">(.+?)</span>', result) for j, i in enumerate(ni):
self.adict[j] = url + i[0]
self.rest.insert(END,i[1]+i[2]+' '+'影片类型:'+i[3]+' '+'更新时间:'+i[4])
# rest.insert(END,'\t\t'+'影片类型:'+i[3])
# rest.insert(END,'\t\t'+'更新时间:'+i[4])
self.rest.insert(END,) # 换行骚操作
self.rest.yview_moveto(j)
self.rest.update() if __name__ == "__main__":
window = tk.Tk()
window.title('影视搜索')
# window.geometry("650x400")
Video(window)
window.resizable(width=False, height=False)
window.update_idletasks()
# width, height = (window.winfo_width(), window.winfo_height())
width, height = (650,400)
screenwidth, screenheight = (window.winfo_screenwidth(), window.winfo_screenheight())
size_loc = '%dx%d+%d+%d' % (width, height, (screenwidth-width)/2, (screenheight-height)/2-30)
window.geometry(size_loc)
window.mainloop()
tkinter + 爬虫 实现影视在线资源系统的更多相关文章
- 基于ssh框架的在线考试系统开发的质量属性
我做的系统是基于ssh框架的在线考试系统.在线考试系统有以下几点特性:(1)系统响应时间需要非常快,可以迅速的出题,答题.(2)系统的负载量也需要非常大,可以支持多人在线考试(3)还有系统的安全性也需 ...
- 基于HTTP Live Streaming(HLS) 搭建在线点播系统
1. 为何要使用HTTP Live Streaming 可以参考wikipedia HTTP Live Streaming(缩写是 HLS)是一个由苹果公司提出的基于HTTP的流媒体 网络传输协议.是 ...
- JavaWeb项目:在线评测系统
此项目为本人的Java大作业. 项目文件和相关资源已上传到本人的GitHub 一.项目概况 1.1设计内容 一个在线评测系统,分用户和管理员两种身份.用户能够通过注册登录,参加比赛,最后实时得到比赛结 ...
- Altera 在线资源使用
Altera 在线资源使用 Altera 在线资源使用 1 1.Altera中文版 2 2.建立myaltera账户 获取官网信息与支持 2 3系统化的设计资源 2 3.1.设计实例 2 3.2.参考 ...
- 基于SSH框架的在线考勤系统开发的质量属性
我要开发的是一个基于SSH框架的在线考勤系统. 质量属性是指影响质量的相关因素,下面我将分别从6个系统质量属性(可用性,易用性,可修改性,性能,安全性,可测试性)来分析我的系统,以及如何实现这些质量属 ...
- 基于B/S架构的在线考试系统的设计与实现
前言 这个是我的Web课程设计,用到的主要是JSP技术并使用了大量JSTL标签,所有代码已经上传到了我的Github仓库里,地址:https://github.com/quanbisen/online ...
- Atitit 在线支付系统功能设计原理与解决方案 与目录
Atitit 在线支付系统功能设计原理与解决方案 与目录 1.1. 支付系统1 1.2. 独立的支付子体系..微服务架构..1 1.3. 参考书籍1 支付战争 [The PayPal Wars:Bat ...
- WSB功能分解(在线考试系统)
对在线考试系统进行WSB功能分解至三级子功能,并且预估每个子功能所需时间. 一级功能 二级功能 三级功能 预估花费时间(小时) 考试管理员功能模块 培训计划 查询 1.5 重置 1 新增计划 1.5 ...
- Bug测试报告--在线考试系统--金州勇士
项目名:在线考试系统 组名:金州勇士 测试者:宫丽君(nice!团队) 代码地址: ssh:git@git.coding.net:handsomeman/examm.git https://g ...
随机推荐
- kakafka - 为CQRS而生fka - 为CQRS而生
前段时间跟一个朋友聊起kafka,flint,spark这些是不是某种分布式运算框架.我自认为的分布式运算框架最基础条件是能够把多个集群节点当作一个完整的系统,然后程序好像是在同一台机器的内存里运行一 ...
- mysql常用语句列表
增 增加一张表 CREATE TABLE `table_name`( ... )ENGINE=InnoDB DEFAULT CHARSET=utf8; 增加记录 INSERT INTO `your_t ...
- 早安打工人! 来把你的.NET程序模块化吧
嗨朋友们,大家好! 还记得我是谁吗? 对了! 我就是 .NET 打工人 玩双截棍的熊猫 今天呐,我特别要向 写框架 的朋友们,想要写框架 ** 的朋友们,已经有框架** 的朋友问声好! 为什么呢?因为 ...
- 获取qq头像
1 <?php 2 header('content-type: image/jpeg'); 3 $QQ = $_GET['qq']; 4 $time2 = date('Y-m-d H:i:s') ...
- LGOJ5022 旅行 noip tg 2018
旅行 标签(空格分隔): noip2018 提高组 今天我给大家带来一份题解. 题目的大大致意思是这样的: $$ 有一颗 树/基环树 求最小遍历顺序 $$ 树的情况自然不必多讲.做一些末端的微处理(将 ...
- P2943 [USACO09MAR]Cleaning Up G
一句话题意:将一个数列分成若干段,每段的不和谐度为该段内不同数字数量的平方,求不和谐度之和的最小值. 令 \(f_i\) 表示前 \(i\) 个数的最小答案,很容易就能写出暴力转移方程:\(f_i=\ ...
- Java基础教程——注释
Java注释 三种注释: public class 注释 { // (1)单行注释 /* * (2)多行注释 */ /**+回车 * (3)文档注释:可以通过javadoc工具生成HTML文档 * & ...
- Golang性能分析与优化
在公司的分享,去除了相关的敏感信息.
- python 爬取喜马拉雅节目生成RSS Feed
记录于:2020年12月03日用了N年的手机在经历N次掉落之后终于扛不住了,后背都张嘴了,估计再摔一次电池都能飞出来.换了手机,由于之前有听喜马拉雅的习惯,但是手机里自带有播客软件,强迫症逼着我不能下 ...
- JZOJ8月6日提高组反思
JZOJ8月6日提高组反思 又是愉快的没落的一天 被2020&2018暴打day2 一堆人AK-- T1 看到这个\(m\)只有100 就坚定了我打暴力的信心 离散化加暴力匹配 原本就想\(3 ...