【问题标题】:How to get Rocket League players' MMR? [closed]如何获得火箭联盟球员的MMR? [关闭]
【发布时间】:2022-01-12 16:50:07
【问题描述】:

我想确保使用平台和给定 ID 检索玩家的 MMR。我尝试使用 TRN Tracker API 进行查看,但他们删除了 Rocket League 的 API。

我想抓取该网站,但没有任何帮助,它必然要求我“激活 javascript”,我认为这对于 python 是不可能的。 所以我尝试抓取another site,除了该网站还要求提供 javascript 并尝试使用 Insomnia(用于测试和设计 API 的应用程序)显示它,它受到 Cloudflare 反 DDOS 系统的保护。

我本来想通过rltracker pro,但它在 2015 年被阻止。 在所有这些失败之后,我想求助于 Psyonix 的 Rocket League API ......它已关闭......

所以我继续研究,发现这个site 可以真正解决我的问题,但实际上我不明白他是如何在一切都关闭且没有任何工作的情况下访问数据的。

有没有我错过的地方?我不知道在哪里可以找到这些信息的来源。

【问题讨论】:

    标签: python api web-scraping rank


    【解决方案1】:

    rlstats 看起来对我来说是可抓取的,请参见此处:

    import requests
    from bs4 import BeautifulSoup
    from datetime import datetime
    import pandas as pd
    
    now = datetime.now()
    
    headers =   {
        'accept':'*/*',
        'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36',
        }
    
    url = 'https://rlstats.net/leaderboards/skills'
    
    resp = requests.get(url,headers=headers)
    
    print(resp)
    
    soup = BeautifulSoup(resp.text,'html.parser')
    
    game_type_dict = {'10':'Duel','11':'Doubles','13':'Standard','12':'Solo Standard'}
    
    final = []
    for table in soup.find_all('table',{'data-platform':'Mixed'}):
        if table['data-skill'] not in game_type_dict:
            continue
    
        game_type = game_type_dict[table['data-skill']]
        for i,row in enumerate(table.find_all('tr')):
            if i == 0:
                continue
            for k,td in enumerate(row.find_all('td')):
    
                if k == 0:
                    rank = td.text.strip()
                if k == 1:
                    name = td.text.strip()
                    link = 'https://rlstats.net/'+td.find('a')['href']
                if k == 2:
                    platform = td.text.strip()
                if k == 3:
                    rating = td.text.strip()
    
                    item = {
                        'game_type' : game_type,
                        'rank' : rank,
                        'name' : name,
                        'link' : link,
                        'platform' : platform,
                        'rating' : rating,
                        'scraped' : now.strftime('%Y-%m-%d %H:%M:%S')
    
                    }
                    final.append(item)
    
    
    df= pd.DataFrame(final)
    df.to_csv('rocket_league.csv',index=False)
    
    print('Saved to rocket_league.csv')
    

    【讨论】:

      猜你喜欢
      • 2013-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      相关资源
      最近更新 更多