如何检索可通过“#”标记的链接访问的隐藏网址

How to retrieve hidden urls accessible through links stubbed out with ’#’

我的应用程序需要从 WTA 网站抓取数据:单次排名和单次公路排名(从排名第一的球员到排名第 1000 的球员)。排名可通过以下 link 获得:http://www.wtatennis.com/rankings

在描绘两个单项排名类别的第一名选手的图片下方,有一个用于访问所有排名类别的菜单:单人、双人、保时捷单打、保时捷双打。问题是点击这些 link 浏览器地址栏中的 url 并没有改变。 Web 检查器显示这些 link 都是使用带有 href="#".

的相同 <a> 标签创建的

http://www.wtatennis.com/rankingsurl默认显示单排的前100名玩家,所以我想应该有一个隐藏的url专用于道路排名页面。起初我想到了一个用选项卡式导航组织的单一文档,但网络检查器显示它们都是不同的页面。

将页面向下滚动到列表底部,可以注意到排名在第100位以上的玩家可以通过分页访问。分页 links 也被 ’#’ 删除:

<a class="footable-page-link" href="#">1</a>
<a class="footable-page-link" href="#">2</a>
<a class="footable-page-link" href="#">3</a>
...

因此,甚至 url 排名超过 100 的玩家的信息也被隐藏了。

有什么方法可以访问所有这些隐藏的 url 吗?
我写了一封信给 ATP 的副总裁兼总法律顾问,我得到了他使用这些 url 的许可,但是当我在第二封信中明确要求他提供此类信息时,他回答说 "those URLs are all publicly available on our website and the WTA website"。理所当然地认为他对此有权利,而且他可能有比与我私人通信更重要的事情要做(我怀疑第三封信会很烦人),我认为我可能只是缺乏从中检索它们的知识他们的网站。

一般来说,如果您看到

<a href="#">...</a>

<a href="javascript:void(0)">...</a>

在页面中,这意味着您正在查看由 JavaScript 控制的 link:点击 link 由事件侦听器捕获,通常在页面上或在祖先元素上,"link" 的行为是做 JavaScript 让它做的任何事情。

对于您正在查看的页面,数据完全通过 Ajax 调用加载,由 JavaScript 发起:JS 回调到当前页面的服务器,然后取回一个 scores.json blob,然后用它来重建 table。当您单击其中一个分页 link 时,将触发另一个 Ajax 调用,并相应地重建页面。 (您可以在检查员的 "Network" 选项卡上观察 Ajax 调用及其响应。)

所以没有 link 到其他页面,因此没有 "hidden URLs" 供您获取:只有一个页面,当您点击时它会用新数据重建 —所谓的 "Single-Page Application" (SPA).