不久前,有一个由NM乔纳森·希尔顿(NM Jonathan Hilton)的父亲制造的网站,该网站对球员的USCF评级历史进行了一些分析。
我认为这是一个非常不错的网站,但它消失了。仍然有一些类似的工具在浮动。我想知道是否存在某种USCF API,或者该如何捕获这些数据。
不久前,有一个由NM乔纳森·希尔顿(NM Jonathan Hilton)的父亲制造的网站,该网站对球员的USCF评级历史进行了一些分析。
我认为这是一个非常不错的网站,但它消失了。仍然有一些类似的工具在浮动。我想知道是否存在某种USCF API,或者该如何捕获这些数据。
Answers:
我不知道API,但是他们以他们的方式来设置它,通过称为screen / web scraping的技术来收集数据非常容易。
例如,搜索您的名字会提供指向特定页面的链接,该页面的URL中包含您的会员ID。然后,如果您具有可识别DOM的编程语言/库,则可以根据页面的设计简单地确定某些内容在哪里。使用jquery选择器和一些遍历,可以对该页面进行解析以得到如下评分:
> $("td td td:contains(Regular Rating)").next().find("nobr").text();
"2072
2012-03(Current floor is 1800)"
不错,评分。
如果他们决定更改页面的设计,这会有些痛苦,甚至更加痛苦,但是最终您将能够解析出所需的所有数据,然后构建一种为每个成员收集数据并存储的方法在您自己的数据库中进行分析。这样做并不难,只需遍历成员ID,您就可以获取其名称,状态,等级等,因为他们的屏幕上有很多可用的内容。
希望能有所帮助。
我认为USCF没有完整的API,但是您可以使用一些特殊的url来简化屏幕抓取/数据解析:
在每个“薄”页面中,您都可以将成员ID作为url参数传递(例如thin3.php?11111111
)。
服务器响应非常轻巧-没有多余的标记。
如果我没记错的话,这些页面是为TD比赛当天的手机浏览器设计的,但是它们对于提取数据也很有用。
现在,以下网址提供了一个API:https : //uschessapi.azurewebsites.net/api/player/ {Id}
在这种情况下,{Id} = USCF成员ID
以下是示例请求/响应:
请求-https: //uschessapi.azurewebsites.net/api/player/13197795
响应(JSON)
{"memberId":"13197795","name":"JEREMY KRASIN","regularRating":"1828","quickRating":"1818","blitzRating":"1765","fideRating":"1749"}
现在,仅返回常规,快速,闪电战和信义等级以及名称。如果有人有任何问题,请随时给我发消息。