以下链接包含巴黎马拉松的结果:http://www.schneiderelectricparismarathon.com/us/the-race/results/results-marathon。 我想刮掉这些结果,但信息在一个框架内。我知道使用Rvest和Rselenium进行抓取的基础知识,但我对如何在这样的框架内检索数据毫无头绪。为了得到一个想法,我尝试的其中一件事是:
url = "http://www.schneiderelectricparismarathon.com/us/the-race/results/results-marathon"
site = read_html(url)
ParisResults = site %>% html_node("iframe") %>% html_table()
ParisResults = as.data.frame(ParisResults)
非常欢迎任何解决此问题的帮助!
答案 0 :(得分:3)
结果由以下URL中的ajax加载:
url="http://www.aso.fr/massevents/resultats/ajax.php?v=1460995792&course=mar16&langue=us&version=3&action=search"
table <- url %>%
read_html(encoding="UTF-8") %>%
html_nodes(xpath='//table[@class="footable"]') %>%
html_table()
PS:我不知道ajax到底是什么,我只知道rvest的基本知识
编辑:为了回答评论中的问题:我在网络抓取方面没有太多经验。如果你只使用rvest或xml的非常基本的技术,你必须了解更多的网站,每个网站都有自己的结构。对于这个,我就是这样做的:
如您所见,在源代码中您没有看到任何结果,因为它们位于iframe中,并且在检查代码时,您可以看到&#34; 2016版本的结果&#34 ;:
class =&#34; iframe-xdm iframe-resultats&#34;数据HREF =&#34; HTTP://www.aso.fr/massevents/resultats/index.php索绪尔= US&安培;当然= mar16&安培;版本= 3&#34;
现在您可以直接使用此网址:http://www.aso.fr/massevents/resultats/index.php?langue=us&course=mar16&version=2
但你仍然可以得到结果。然后,您可以使用Chrome开发者工具&gt;网络&gt; XHR。刷新页面时,您可以看到数据是从此网址加载的(当您选择“男性”类别时):http://www.aso.fr/massevents/resultats/ajax.php?course=mar16&langue=us&version=2&action=search&fields%5Bsex%5D=F&limiter=&order=
现在你可以得到结果了!
如果您想要第二页等,您可以点击页面编号,然后使用开发者工具查看会发生什么!