网页抓取 futbin.com

Posted

技术标签:

【中文标题】网页抓取 futbin.com【英文标题】:Web-scraping futbin.com 【发布时间】:2019-03-08 20:27:17 【问题描述】:

我正在尝试从 futbin.com 收集包含 FIFA 终极球队球员时间序列数据的数据集。 我在 GitHub 上找到了一个脚本 https://github.com/darkyin87/futbin-scraper 它能够在给定玩家/ID列表的情况下获取玩家的当前价格:

import requests  
import json  

domain = 'https://www.futbin.com'  
version = 19  
page = 'playerPrices'  

player_ids =   
  'Arturo Vidal': 181872,  
  'Pierre-Emerick Aubameyang': 188567,  
  'Robert Lewandowski': 188545,  
  'Jerome Boateng': 183907,  
  'Sergio Ramos': 155862,  
  'Antoine Griezmann': 194765,  
  'David Alaba': 197445,  
  'Paulo Dybala': 211110,  
  'Radja Nainggolan': 178518  


def fetch_prices():  
 ret_val =   
  for name, id in player_ids.iteritems():  
    url = "%s/%s/%s?player=%s" % (domain, version, page, id)  
    response = requests.get(url)  
    data = response.json()  
    ret_val[name] = data[str(id)]['prices']['ps']['LCPrice']  
  return ret_val  

if __name__ == "__main__":  
  prices = fetch_prices()  

fetch_prices  

但我要查找的信息不是当前价格,而是位于底部的价格(特别是 PS 价格)历史记录,如图所示。 https://www.futbin.com/19/player/143/Cristiano%20Ronaldo/

我尝试了一些方法,但似乎无法解析/提取此信息...有人可以帮助我或给我提示吗? 提前致谢

【问题讨论】:

【参考方案1】:

很难以这种方式获取数据。如果您检查您的浏览器网络工具,您可以看到创建图表的数据来自 http 请求。当然不要滥用它。

import requests
from datetime import datetime

player_ids =   
  'Arturo Vidal': 181872,  
  'Pierre-Emerick Aubameyang': 188567,  
  'Robert Lewandowski': 188545,  
  'Jerome Boateng': 183907,  
  'Sergio Ramos': 155862,  
  'Antoine Griezmann': 194765,  
  'David Alaba': 197445,  
  'Paulo Dybala': 211110,  
  'Radja Nainggolan': 178518  


for (name,id) in player_ids.items():
    r = requests.get('https://www.futbin.com/19/playerGraph?type=daily_graph&year=19&player=0'.format(id))
    data = r.json()

    print(name)   
    print("-"*20)
    #Change ps to xbox or pc to get other prices
    for price in data['ps']:
        #There is extra zeroes in response.
        date = datetime.utcfromtimestamp(price[0] / 1000).strftime('%Y-%m-%d')
        price = price[1]
        print(date,price)

这会给你

Arturo Vidal
--------------------
2018-09-21 8450
2018-09-22 9318
2018-09-23 10820
2018-09-24 13288
2018-09-25 13346
2018-09-26 17235
2018-09-27 19092
2018-09-28 15960
2018-09-29 14283
2018-09-30 14967
2018-10-01 15380
2018-10-02 15367
2018-10-03 13192
Pierre-Emerick Aubameyang
--------------------
2018-09-21 136000
2018-09-22 160673
2018-09-23 205474
2018-09-24 216344
2018-09-25 244750
2018-09-26 277007
2018-09-27 288659
2018-09-28 259007
2018-09-29 261799
2018-09-30 270771
2018-10-01 274245
2018-10-02 281057
2018-10-03 275606
Robert Lewandowski
--------------------
2018-09-21 73000
2018-09-22 79961
2018-09-23 94827
2018-09-24 117893
2018-09-25 125310
2018-09-26 144630
2018-09-27 159224
2018-09-28 135122
2018-09-29 132696
2018-09-30 137728
2018-10-01 143130
2018-10-02 150968
2018-10-03 144250

名单还在继续。

【讨论】:

以上是关于网页抓取 futbin.com的主要内容,如果未能解决你的问题,请参考以下文章

如何抓取网页中的动态数据

使用PHP的cURL库进行网页抓取

python怎么抓取网页中DIV的文字

抓取网页请求,然后用Postman发送请求

如何利用java中url实现网页内容的抓取

JAVA 抓取搜索网页内容