【玩具】PSN中文站指定游戏成就数据获取

这是一个从psn中文站获取游戏成就列表的程序
需要自己改游戏网址,下面是以celeste为例

"""
Author: Sprite
Date: 2022/5/10  19:30
Have a nice day ~~~~~
"""
import requests
from json import loads
import os
import csv
from re import search, findall


def fake_ip():
    global Headers
    Headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36'
    }
    URL = 'http://d.jghttp.alicloudecs.com/getip?num=1&type=2&pro=&city=0&yys=0&port=1&pack=48158&ts=0&ys=0&cs=0&lb=1&sb=0&pb=45&mr=1&regions='
    resp = requests.get(url=URL, headers=Headers)
    ip_data = loads(resp.text)['data'][0]
    fake_ip = f'{ip_data["ip"]}:{ip_data["port"]}'
    proxy = {
        'http': f'http://{fake_ip}',
        'https': f'http://{fake_ip}'
    }
    return proxy


def origin_text(website, proxy):
    resp = requests.get(url=website, headers=Headers, proxies=proxy)
    if resp.status_code == 200:
        resp.encoding = 'utf-8'
        return resp.text
    else:
        print(resp.status_code)
        return resp.status_code


def get_name(info):
    return search(r'<title>(.+?)</title>', info).group(1)


def create_file(game_name):
    if not os.path.exists(f'{game_name}.csv'):
        csv.writer(open(f'{game_name}.csv', 'w', encoding='utf-8', newline='')).writerow(['成就名', '成就说明', '评论区链接', '完成百分比'])


def get_target_info(info):
    re_info1 = r'(?s)<tr id="\d{1,2}" class="trophy">(.+?)</tr>'
    info1 = findall(re_info1, info)

    result = []
    for x in info1:
        re_info2 = r'(?s)<a href="(.*?)"><img.*' \
                   r'class="text-[a-z]+">(.+?)</a>.*' \
                   r'<em class="text-gray">(.+?)</em>.*' \
                   r'\n                    (.+?)\n            '

        info2 = findall(re_info2, x)[0]
        info2 = [info2[1], info2[2], info2[0], info2[3]]
        result += [info2]

    return result


if __name__ == '__main__':
    fake_ip = fake_ip()
    origin_info = origin_text('https://psnine.com/psngame/14979', fake_ip)

    game_name = get_name(origin_info)
    create_file(game_name)

    result = get_target_info(origin_info)
    csv.writer(open(f'{game_name}.csv', 'a', encoding='utf-8', newline='')).writerows(result)

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sprite.Nym

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值