• Python-王者荣耀自动刷金币+爬取英雄信息+图片


       前提:本文主要功能是

            1.用python代刷王者荣耀金币

            2.爬取英雄信息

            3.爬取王者荣耀图片之类的。

        (全部免费附加源代码)

       思路:第一个功能是在基于去年自动刷跳一跳python代码上面弄的,思路来源陈想大佬,主要是图片识别像素,然后本机运行模拟器即可,第二、三功能是python基本爬虫功能。3个功能整合了一下。

       实现效果如下:

      

        

       

    /***************************************************************************************************************************************************************************************************/

      1.自动刷王者荣耀金币(主要):

        配置环境

          adb环境配置: https://www.cnblogs.com/yc8930143/p/8259486.html 

                         i.            pip 安装PIL模块

                        ii.            pip安装six模块

                        iii.            pip安装shutil模块

                        iv.            pip安装subprocess模块

                        v.            pip安装numpy模块

                        vi.            pip安装matplotlib模块

        模拟器或者手机什么的只要adb device 能识别就行,端口什么的不影响,然后命令行在文件根目录下运行即可。

        过程:

          基本环境弄好后,代码就是search_jump的像素识别(大小为模拟器或手机界面大小),在一定范围内进行点击,然后循环点击即可,感觉可以用到其他APP上面(比如全名K歌签到领取鲜花等等)或者服务器上装一个windows系统,这样就可以一直跑了.

        注意:并不是只有一个automain.py代码,其中涉及到其他文件夹下的函数调用,主要就是模拟点击功能的实现吧。

      代码解析:

        screent_shot(屏幕截图):screen_way是截图方式,通过pull_screenshot和check_screenshot进行屏幕截图,便于后面图片像素分析(读者也可自己加入选择部分截图功能)

        yes_or_no:基本连接手机或模拟器函数,判断电脑是否连接上外设

        然后就是search_jump,game_next等基本函数了,感觉还是蛮容易理解的,给出源代码吧

                  链接: https://pan.baidu.com/s/1PXDPduSEUbAw-pOvrypM4A 提取码: am7s 

      2.爬取图片和验证码(次要)

        识别官网API接口即可,然后简单处理信息,对于爬虫还算一个比较好的入门,给出完整代码

    picture.py代码:

                  核心API接口就是:http://gamehelper.gm825.com/wzry/hero/list?game_id=7622   ,然后用户简单分析一下json数据即可

        

    #!/usr/bin/env python 
    # -*- coding: utf-8 -*- 
    # @Time : 2018/9/24 17:11
    # @Author : Empirefree
    # @File : 爬取照片.py
    # @Software: PyCharm
    import requests
    import os
    from urllib.request import urlretrieve
    
    
    def download(url):
    	headers = {
    				'Accept-Charset': 'UTF-8',
    				'Accept-Encoding': 'gzip, deflate',
    				'Connection': 'Keep-Alive'
    				}
    	res = requests.get(url, headers=headers).json()
    	hero_num = len(res['list'])
    	print('[Hero Num]:%d' % hero_num)
    	for hero in res['list']:
    		pic_url = hero['cover']
    		hero_name = hero['name'] + '.jpg'
    		filename = './images/' + hero_name
    		if 'images' not in os.listdir():
    			os.makedirs('images')
    		urlretrieve(url=pic_url, filename=filename)
    		print('[INFO]:Get %s picture...' % hero['name'])
    
    if __name__ == '__main__':
    	print('**************************************************************************')
    	print('*****************!!!欢迎使用王者荣耀小助手!!!*************************')
    	print('*****************作者:Empirefree                    *********************')
    	print('*****************工具: Pycharm                       *********************')
    	print('*****************时间: 2018/9/24 17:11               *********************')
    	print('**************************************************************************')
    	download("http://gamehelper.gm825.com/wzry/hero/list?game_id=7622")
    	print('**************************************************************************')
    	print('照片已下载到您images目录下,请保证有网条件下执行本程序')
    	print('**************************************************************************')
    	n = input('回车结束........')
    

        info.py代码

        分析:和上述代码差不多,也是接口分析问题: http://gamehelper.gm825.com/wzry/equip/list?game_id=7622 ,个人感觉比较好用的就是网络图片下载的语句

        下载图片:urlretrieve()

     

        

    #!/usr/bin/env python 
    # -*- coding: utf-8 -*- 
    # @Time : 2018/9/24 17:49 
    # @Author : Empirefree 
    # @File : info.py 
    # @Software: PyCharm
    import requests
    import time
    
    
    class Spider():
    	def __init__(self):
    		self.headers = {
    					'Accept-Charset': 'UTF-8',
    					'Accept-Encoding': 'gzip, deflate',
    					'Connection': 'Keep-Alive'
    					}
    		self.weapon_url = "http://gamehelper.gm825.com/wzry/equip/list?game_id=7622"
    		self.heros_url = "http://gamehelper.gm825.com/wzry/hero/list?game_id=7622"
    		self.hero_url = "http://gamehelper.gm825.com/wzry/hero/detail?hero_id={}"
    		print('*' * 60)
    		print('[INFO]:王者荣耀助手...')
    		print('[Usage]:请输入英雄ID获取英雄信息...')
    		print('[Author]:Empirefree')
    		print('*' * 60)
    	# 外部调用函数
    	def run(self):
    		heroId_exist = self._Get_HeroId()
    		heroId = input('
    Enter the Hero ID:')
    		if heroId not in heroId_exist:
    			print('[Error]:HeroId inexistence...')
    			return
    		weapon_info = self._Get_WeaponInfo()
    		self._Get_HeroInfo(weapon_info, heroId)
    	# 获得英雄ID
    	def _Get_HeroId(self):
    		res = requests.get(url=self.heros_url, headers=self.headers)
    		heros = res.json()['list']
    		num = 0
    		heroId_list = []
    		for hero in heros:
    			num += 1
    			print('%sID: %s' % (hero['name'], hero['hero_id']), end='			')
    			heroId_list.append(hero['hero_id'])
    			if num == 3:
    				num = 0
    				print('')
    		return heroId_list
    	# 获取武器信息
    	def _Get_WeaponInfo(self):
    		res = requests.get(url=self.weapon_url, headers=self.headers)
    		weapon_info = res.json()['list']
    		return weapon_info
    	# 获得出装信息
    	def _Get_HeroInfo(self, weapon_info, heroId):
    		def seek_weapon(equip_id, weapon_info):
    			for weapon in weapon_info:
    				if weapon['equip_id'] == str(equip_id):
    					return weapon['name'], weapon['price']
    			return None
    		res = requests.get(url=self.hero_url.format(heroId), headers=self.headers).json()
    		print('[%s History]: %s' % (res['info']['name'], res['info']['history_intro']))
    		num = 0
    		for choice in res['info']['equip_choice']:
    			num += 1
    			print('
    [%s]:
      %s' % (choice['title'], choice['description']))
    			total_price = 0
    			for weapon in choice['list']:
    				weapon_name, weapon_price = seek_weapon(weapon['equip_id'], weapon_info)
    				print('[%s Price]: %s' % (weapon_name, weapon_price))
    				if num == 3:
    					print('')
    					num = 0
    				total_price += int(weapon_price)
    			print('[Ultimate equipment price]: %d' % total_price)
    
    
    if __name__ == '__main__':
    	while True:
    		Spider().run()
    		time.sleep(5)
    

        到此算是整理完王者荣耀写过的代码了,QAQ。

  • 相关阅读:
    [Tkinter 教程12] 布局管理 (Pack Place Grid)
    python 文本全选
    CMD窗口恢复默认设置
    Python基础第一天
    Windows:安装Python2.7、3.6与共存,安装pycharm
    Linux安装
    Python input() 函数
    python的continue和pass的区别
    Python 文件读写操作实例详解
    python tkinter教程-事件绑定
  • 原文地址:https://www.cnblogs.com/meditation5201314/p/10327706.html
Copyright © 2020-2023  润新知