【发布时间】:2020-08-23 01:25:48
【问题描述】:
我想使用 python 从网站futbin.com 获取一些数据。该网站拥有 FIFA Ultimate Team 中每位球员的价格数据。例如,如果我想查看 Vidal 的价格,我会去链接:https://www.futbin.com/20/player/19765/arturo-vidal 并查看他的当前价格。
我试图为这个特定的播放器制作一个程序,但我无法这样做,因为我对使用“请求”库非常陌生。所以我在网上查了一下,通过darkyin87https://github.com/darkyin87/futbin-scraper找到了这个确切程序的代码;
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
代码转到与我上面提到的不同的网站,并且不包含任何图形元素。它只有纯文本和一堆关于纯文本播放器的其他详细信息,这使得程序更容易阅读和操作:https://www.futbin.com/20/playerPrices/?player=181872。
我不知道开发者是如何访问这个网站的,因为我在 futbin.com 上浏览时找不到它。
所以我想我有两个问题:
- 如果我无法访问纯文本网站,我将如何完成这项任务,并且
- 我如何找到这样的网站,这些网站具有代码可以操作的简单纯文本。
【问题讨论】:
-
请注意,我稍微修改了我的答案,因为我最初给出的结果似乎不适用于所有玩家。要引用的正确属性是
data-player-resource -
您正在描述 Web 服务调用和网页之间的区别。
https://www.futbin.com/20/playerPrices/?player=181872是一个网络服务调用。您可能希望访问 api 定义,这样您就可以只请求您需要的信息,而不会浪费带宽和精力来抓取 html。