开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 25896|回复: 4
收起左侧

[源码分享] 爬取大型单机游戏下载地址找游戏方便的很

[复制链接]
结帖率:0% (0/4)
发表于 2020-8-13 09:43:40 | 显示全部楼层 |阅读模式   江西省赣州市
本帖最后由 懵懵懂懂的小男 于 2020-8-13 09:46 编辑

1.png
大型单机游戏下载地址爬取,非常方便
目前没有做搜索功能,没发现搜索接口如果要做,就需要自己先把所有资料爬取,然后写到数据库
或者表格里,然后再读取出来find()字符串查找.游戏蛮多的,我没有去存储这样的数据库或者表格,交给有志之士去完成吧!
main入口在GameUI.运行它或者编译它
  1. from tkinter import ttk
  2. from tkinter import *
  3. import requests
  4. import threading
  5. import io
  6. from PIL import Image, ImageTk
  7. from 大型单机游戏.gamedownload import GameDown

  8. class GameUI():
  9.     def __init__(self):
  10.         self.root = Tk()
  11.         self.root.title("大型游戏下载")
  12.         self.var = StringVar()
  13.         self.var_xunlei = StringVar()
  14.         self.var_baidu = StringVar()
  15.         self.var_zhongzi = StringVar()
  16.     #显示所有组件
  17.     def show(self):
  18.         # gd.get_games_Down_Url(gameid[0]['url'])
  19.         self.show_button()
  20.         self.show_download()
  21.         self.show_img()
  22.         self.root.mainloop()
  23.     #列表绑定事件,点击响应
  24.     def trefun(self, event):
  25.         curItem = self.tree.focus()
  26.         line_id = int(self.tree.item(curItem)['text'])
  27.         global games, gd
  28.         print(games[line_id]['url'])
  29.         downs = gd.get_games_Down_Url(games[line_id]['url'])
  30.         print(downs['xunlei'])
  31.         self.var_xunlei.set(downs['xunlei'])
  32.         self.var_baidu.set(downs['baidu'])
  33.         self.var_zhongzi.set(downs['zhongzi'])
  34.         self.img=self.get_img(games[line_id]['img'])
  35.         self.imglb.config(image=self.img)
  36.     # 创建一个列表tree
  37.     def londlist(self):
  38.         fm = Frame(self.root)
  39.         fm.grid(row=0, column=0)
  40.         titles = ('GameName', 'Score', "Type", "Label", 'Data')
  41.         self.scrollbar = Scrollbar(fm)
  42.         self.scrollbar.pack(side=RIGHT, fill=Y)
  43.         self.tree = ttk.Treeview(fm, column=titles, yscrollcommand=self.scrollbar.set, show='headings', height=20)
  44.         self.tree.bind('<<TreeviewSelect>>', self.trefun)
  45.         # 表示列,作为索引,不显示 只是设置列的一些属性
  46.         self.tree.column('GameName', width=300, anchor='center')
  47.         self.tree.column('Score', width=50, anchor='center')
  48.         self.tree.column('Type', width=100, anchor='center')
  49.         self.tree.column('Label', width=200, anchor='center')
  50.         self.tree.column('Data', width=100, anchor='center')
  51.         # 显示的表头名字
  52.         self.tree.heading('GameName', text='GameName')  # 显示表头
  53.         self.tree.heading('Score', text='Score')  # 显示表头
  54.         self.tree.heading('Type', text='Type')  # 显示表头
  55.         self.tree.heading('Label', text='Label')  # 显示表头
  56.         self.tree.heading('Data', text='Data')  # 显示表头
  57.         self.scrollbar.config(command=self.tree.yview)
  58.         self.tree.pack()
  59.     #往列表里加内容
  60.     def insert_list(self, games):
  61.         for i, item in enumerate(games):
  62.             print(item['name'], item['score'], item['type'], item['label'], item['date'])

  63.             if float(item['score'])>=8:
  64.                 self.tree.insert('', END, text=str(len(self.tree.get_children())),
  65.                                  values=(item['name'], item['score'], item['type'], item['label'], item['date']),tags = ('excellent',))

  66.             elif float(item['score'])>=6 and float(item['score'])<8:
  67.                 self.tree.insert('', END, text=str(len(self.tree.get_children())),
  68.                                  values=(item['name'], item['score'], item['type'], item['label'], item['date']),
  69.                                  tags=('pass',))
  70.             else:
  71.                 self.tree.insert('', END, text=str(len(self.tree.get_children())),
  72.                                  values=(item['name'], item['score'], item['type'], item['label'], item['date']),
  73.                                  tags=('fail',))
  74.             self.tree.tag_configure('excellent', background='red')
  75.             self.tree.tag_configure('pass', background='pink')
  76.             self.tree.tag_configure('fail', background='blue')
  77.     # 继续爬一页
  78.     def keep_load(self):
  79.         global games, yema, ye
  80.         yema += 1
  81.         if yema <= int(ye):
  82.             gd = GameDown(yema)
  83.             gd.get_num()
  84.             gs = gd.get_games()
  85.             ui.insert_list(gs)
  86.             # 存起来
  87.             games += gs
  88.             gd.get_num()
  89.             lenlgh = len(self.tree.get_children())
  90.             self.var.set(f"目前已经帮您找到{lenlgh}/{num}个游戏,{yema}/{ye}页的下载地址")
  91.     # 加载全部页面
  92.     def keep_load_all(self):
  93.         t = threading.Thread(target=self.keep_load_all_map)
  94.         t.setDaemon(True)
  95.         t.start()
  96.     #过程子程序
  97.     def keep_load_all_map(self):
  98.         global games, yema, ye
  99.         while True:
  100.             yema += 1
  101.             if yema <= int(ye):
  102.                 gd = GameDown(yema)
  103.                 gd.get_num()
  104.                 gs = gd.get_games()
  105.                 ui.insert_list(gs)
  106.                 # 存起来
  107.                 games += gs
  108.                 gd.get_num()
  109.                 lenlgh = len(self.tree.get_children())
  110.                 self.var.set(f"目前已经帮您找到{lenlgh}/{num}个游戏,{yema}/{ye}页的下载地址")
  111.             else:
  112.                 return
  113.     #创建按钮
  114.     def show_button(self):

  115.         global ye, num, yema
  116.         fm = Frame(self.root)
  117.         fm.grid(row=1, column=0, sticky=W)
  118.         b1 = Button(fm, text='继续加载', command=self.keep_load)
  119.         b1.grid(row=0, column=0)
  120.         b2 = Button(fm, text='爬取全部', command=self.keep_load_all)
  121.         b2.grid(row=0, column=1)
  122.         lenlgh = len(self.tree.get_children())
  123.         self.var.set(f"目前已经帮您找到{lenlgh}/{num}个游戏,{yema}/{ye}页的下载地址")
  124.         l1 = Label(fm, textvariable=self.var,foreground='red')
  125.         l1.grid(row=0, column=2)
  126.     # 创建下载地址的标签
  127.     def show_download(self):
  128.         fm = Frame(self.root)
  129.         fm.grid(row=2, column=0, sticky=W)
  130.         Label(fm, text="迅雷下载:").grid(row=0, column=0, sticky=W)
  131.         t1 = Entry(fm, textvariable=self.var_xunlei, width=100)
  132.         t1.grid(row=0, column=1, sticky=W)
  133.         Label(fm, text="其它方式:").grid(row=1, column=0, sticky=W)
  134.         t2 = Entry(fm, textvariable=self.var_baidu, width=100)
  135.         t2.grid(row=1, column=1, sticky=W)
  136.         Label(fm, text="其它方式:").grid(row=2, column=0, sticky=W)
  137.         t3 = Entry(fm, textvariable=self.var_zhongzi, width=100)
  138.         t3.grid(row=2, column=1, sticky=W)
  139.     # 创建海报
  140.     def show_img(self):
  141.         fm=Frame(self.root)
  142.         fm.grid(row=0,column=1)
  143.         self.imglb=Label(fm)
  144.         self.imglb.pack()
  145.     #返回一个网络上的图片
  146.     def get_img(self, url):
  147.         #获取网络图片的内容
  148.         image_bytes =requests.get(url).content
  149.         #保存到内存
  150.         data_stream = io.BytesIO(image_bytes)
  151.         #加载内存数据
  152.         pil_image = Image.open(data_stream)
  153.         #修改尺寸
  154.         pil_image = pil_image.resize((150, 183), Image.ANTIALIAS)
  155.         #转化成tk支持的图片
  156.         tk_image = ImageTk.PhotoImage(pil_image)
  157.         return tk_image
  158. if __name__ == "__main__":
  159.     ui = GameUI()
  160.     games = []
  161.     ui.londlist()
  162.     yema = 1
  163.     gd = GameDown(1)
  164.     num = gd.get_num()
  165.     ye = gd.get_ye()
  166.     gs = gd.get_games()
  167.     ui.insert_list(gd.get_games())
  168.     games += gs
  169.     ui.show()
复制代码

下载地址:https://lanren.lanzous.com/iSOQefkmhrg



发表于 2024-3-18 01:03:42 高大上手机用户 | 显示全部楼层   重庆市重庆市
看看
回复 支持 反对

使用道具 举报

发表于 2021-1-19 16:04:36 | 显示全部楼层   福建省莆田市
链接取消了哥。。可以补一下吗
回复 支持 反对

使用道具 举报

结帖率:53% (8/15)

签到天数: 3 天

发表于 2020-8-13 09:59:55 | 显示全部楼层   河南省平顶山市
感谢分享学习一下 看看怎么样
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)
发表于 2020-8-13 09:51:52 | 显示全部楼层   安徽省阜阳市
下载一下,研究研究
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表