import urllib.request
import tkinter
import re
import os
class Thunder:
__slots__ = ('master', 'pattern', 'page', 'url', 'result', 'button', 'ext') # 限制类属性
def __init__(self):
self.pattern = re.compile(r'<a href="(http://www\.fenxs\.com/\d+\.html)" title="分享社.+?</a>') # 找到最新的网页
self.page = re.compile('(?<!<p>)分享社.+?([\w\d:]+?)密码(.+?)<', re.ASCII) # 找到页面源代码中不以<p>开头的账号
self.ext = re.compile('<p>分享社.+?([\w\d:]+?)密码(.+?)<', re.ASCII) # 找到页面源代码中以<p>开头的账号
self.url = urllib.request.Request('http://www.fenxs.com/') # 迅雷分享社的网址
def run(self):
self.master = tkinter.Tk(className='迅雷会员账号获取器') # 设置窗口标题
self.button = tkinter.Button(self.master, text='点击获取最新账号', height=3, font='华文黑体, 24', command=self.get) # 按下按钮时, 调用self.get()函数
self.button.pack() # 封装窗口
tkinter.mainloop() # 进入主循环
def show(self):
res = open('result.txt', 'w') # 打开一个文本文件
for i in self.result:
res.write('用户名: %s\t密码: %s\n' % (i[0], i[1])) # 按格式写入用户名和密码
res.close() # 写入之后完关闭文件
os.system('result.txt') # 用命令行打开它
os.remove('result.txt') # 查看之后删除它
def get(self):
data = urllib.request.urlopen(self.pattern.findall(urllib.request.urlopen(self.url).read().decode())[0]).read().decode() # 获取网页源代码
self.result = self.ext.findall(data)[:1] + self.page.findall(data) # 找到网页中的用户名和密码
self.show() # 调用self.show()函数
process = Thunder() # 实例化一个Thunder对象
process.run() # 调用run()方法, 运行