123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- import logging
- import os
- import argparse
- from datetime import datetime
- from comp.comp import get_comp_info
- from heros.heroes import get_heroes_info
- from minion.minion import get_minion_info
- session_id_value = "" # 请替换为实际的sessionid值
- csrf_token_value = "" # 请替换为实际的csrftoken值
- def main():
- parser = argparse.ArgumentParser(description="爬取hsreplay.net酒馆数据")
- parser.add_argument("-o",
- "--operation",
- choices=["comp", "hero", "minion"],
- required=True,
- help="comp: 流派 hero: 英雄 minion: 随从")
- parser.add_argument("-p",
- "--percentile",
- choices=["ALL", "TOP_20_PERCENT"],
- required=True,
- help="ALL: 全部玩家 TOP_20_PERCENT: 百分之二十玩家")
- parser.add_argument(
- "-r",
- "--range",
- choices=["CURRENT_BATTLEGROUNDS_PATCH", "LAST_7_DAYS"],
- required=True,
- help="CURRENT_BATTLEGROUNDS_PATCH: 当前版本 LAST_7_DAYS: 最近7天")
- parser.add_argument("-s",
- "--sessionid",
- default="",
- help="session_id的值(可选/在main.py中修改)")
- parser.add_argument("-c",
- "--csrftoken",
- default="",
- help="csrf_token的值(可选/在main.py中修改)")
- args = parser.parse_args()
- params = {
- "BattlegroundsMMRPercentile": args.percentile,
- "BattlegroundsTimeRange": args.range,
- }
- log = create_logger(
- args.operation,
- os.path.join("logs/" + args.operation,
- datetime.now().strftime("%Y%m%d_%H%M%S") + ".log"))
- session_id_value = args.sessionid
- csrf_token_value = args.csrftoken
- headers = {
- "User-Agent":
- "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3",
- "Referer": "https://hsreplay.net/",
- "accept-language": "zh-CN,zh;q=0.9",
- "Cookie":
- f"sessionid={session_id_value}; csrftoken={csrf_token_value}",
- }
- if args.operation == "comp":
- get_comp_info(params, headers, log)
- elif args.operation == "hero":
- get_heroes_info(params, headers, log)
- elif args.operation == "minion":
- get_minion_info(params, headers, log)
- def safe_create_directory(directory):
- if not os.path.exists(directory):
- os.makedirs(directory)
- def create_logger(logger_name, file_name):
- safe_create_directory(os.path.dirname(file_name))
- logger = logging.getLogger(logger_name)
- logger.setLevel(logging.INFO)
- file_handler = logging.FileHandler(file_name)
- formatter = logging.Formatter(
- "%(asctime)s - %(name)s - %(levelname)s - %(message)s")
- file_handler.setFormatter(formatter)
- logger.addHandler(file_handler)
- return logger
- if __name__ == "__main__":
- main()
|