艺赛旗 RPA 全面免费下载中
点击下载
http://www.i-search.com.cn/index.html?from=line27
自动化场景, 和爬虫的场景非常相似, 网页获取信息, 拾取信息.
但实际利用 Python 代码进行爬虫, 其中是对于网站服务器进行请求获取信息, 和设计器的获取信息原理有所不同.
以下是实际爬虫代码案例代码: 目标是获取游戏英雄信息, 获取成功之后, 进行英雄选择然后进行英雄出装策略.
- from urllib.request import urlretrieve
- import requests
- import os
- """
- 函数说明: 打印所有英雄的名字和 ID
- Parameters:
- url - GET 请求地址
- header - headers 信息
- """
- def hero_list(url, header):
- print('' 100)
- print('\t\t\t\t 欢迎使用《王者荣耀》出装下助手!')
- print('' 100)
- req = requests.get(url=url, headers=header).JSON()
- flag = 0
- for each_hero in req['list']:
- flag += 1
- print('%s 的 ID 为:%-7s' % (each_hero['name'], each_hero['hero_id']), end='\t\t')
- if flag == 3:
- print('\n', end='')
- flag = 0
- """
- 函数说明: 根据 equip_id 查询武器名字和价格
- Parameters:
- equip_id - 武器的 ID
- weapon_info - 存储所有武器的字典
- Returns:
- weapon_name - 武器的名字
- weapon_price - 武器的价格
- """
- def seek_weapon(equip_id, weapon_info):
- for each_weapon in weapon_info:
- if each_weapon['equip_id'] == str(equip_id):
- weapon_name = each_weapon['name']
- weapon_price = each_weapon['price']
- return weapon_name, weapon_price
- """
- 函数说明: 获取并打印出装信息
- Parameters:
- url - GET 请求地址, 通过 Fiddler 抓包获取
- header - headers 信息
- weapon_info - 存储所有武器的字典
- """
- def hero_info(url, header, weapon_info):
- req = requests.get(url=url, headers=header).JSON()
- print('\n 历史上的 %s:\n %s' % (req['info']['name'], req['info']['history_intro']))
- for each_equip_choice in req['info']['equip_choice']:
- print('\n%s:\n %s' % (each_equip_choice['title'], each_equip_choice['description']))
- total_price = 0
- flag = 0
- for each_weapon in each_equip_choice['list']:
- flag += 1
- weapon_name, weapon_price = seek_weapon(each_weapon['equip_id'], weapon_info)
- print('%s:%s' % (weapon_name, weapon_price), end='\t')
- if flag == 3:
- print('\n', end='')
- flag = 0
- total_price += int(weapon_price)
- print('神装套件价格共计:%d' % total_price)
- """
- 函数说明: 获取武器信息
- Parameters:
- url - GET 请求地址, 通过 Fiddler 抓包获取
- header - headers 信息
- Returns:
- weapon_info_dict - 武器信息
- """
- def hero_weapon(url, header):
- req = requests.get(url=url, headers=header).JSON()
- weapon_info_dict = req['list']
- return weapon_info_dict
- if name == 'main':
- headers = {'Accept-Charset': 'UTF-8',
- 'Accept-Encoding': 'gzip,deflate',
- 'User-Agent': 'Dalvik/2.1.0 (Linux; U; Android 6.0.1; MI 5 MIUI/V8.1.6.0.MAACNDI)',
- 'X-Requested-With': 'XMLHttpRequest',
- 'Content-type': 'application/x-www-form-urlencoded',
- 'Connection': 'Keep-Alive',
- 'Host': 'gamehelper.gm825.com'}
- weapon_url = ""heros_url =""
- hero_list(heros_url, headers)
- print()
- hero_id = input("请输入要查询的英雄 ID:")
- hero_url = "http://gamehelper.gm825.com/wzry/hero/detail?hero_id={
- }&channel_id=90009a&app_id=h9044j&game_id=7622&game_name=王者荣耀&vcode=12.0.3&version_code=1203&cuid=2654CC14D2D3894DBF5808264AE2DAD7&ovr=6.0.1&device=Xiaomi_MI+5&net_type=1&client_id=1Yfyt44QSqu7PcVdDduBYQ==&info_ms=fBzJ+Cu4ZDAtl4CyHuZ/JQ==&info_ma=XshbgIgi0V1HxXTqixI+KbgXtNtOP0/n1WZtMWRWj5o=&mno=0&info_la=9AChHTMC3uW+fY8+CFhcFw==&info_ci=9AChHTMC3uW+fY8+CFhcFw==&mcc=0&clientversion=&bssid=VY+eiuZRJ/waXmoLLVUrMODX1ZTf/2dzsWn2AOEM0I4=&os_level=23&os_id=dc451556fc0eeadb&resolution=1080_1920&dpi=480&client_ip=192.168.0.198&pdunid=a83d20d8".format(
- hero_id)
- weapon_info_dict = hero_weapon(weapon_url, headers)
- hero_info(hero_url, headers, weapon_info_dict)
以上代码, 调整好 Python 环境之后, 能够直接运行, 大家有兴趣可以看看代码效果, 感受实际爬虫的效率和设计器运行过程的效率比较. 真正的大型爬虫项目, 对于并发性和效率要求更高.
来源: http://www.bubuko.com/infodetail-3042566.html