在表格中抓取子元素,这些元素在html中找不到但仅在Chrome> F12>元素中找到

时间:2013-09-22 19:09:28

标签: javascript html r google-chrome web-scraping

我试图抓住得分/事件时间以及球员名称http://en.gooooal.com/soccer/analysis/8401/events_840182.html。但是无法工作。

require(RCurl);
require(XML);
lnk = "http://en.gooooal.com/soccer/analysis/8401/events_840182.html";
doc = htmlTreeParse(lnk,useInternalNodes=TRUE);
x = unlist(xpathApply(doc, "//table/tr/td"));

普通的html页面不显示表格内容的详细信息。 节点只能来自

>>>打开Chrome>>>点击F12>>>单击元素

有人可以帮忙吗?非常感谢。

3 个答案:

答案 0 :(得分:2)

如果您在Chrome开发者工具处于活动状态时重新加载页面,则可以看到真实数据是通过XHR从http://en.gooooal.com/soccer/analysis/8401/goal_840182.js?GmFEjC8MND获取的。此网址包含您可以从页面中抓取的事件ID 840182? 之后的部分似乎只是绕过浏览器缓存的一种方式。 8401,再次,似乎只是id的第一个数字。

因此,您可以加载原始页面,构建第二个URL,并从那里获取实际数据。

无论如何......在大多数情况下,从网站上抓取数据是一种道德上有问题的做法。我希望你知道你在做什么:)

答案 1 :(得分:1)

听起来好像内容是使用javascript异步插入的,所以使用Curl对你没有帮助。

你需要一个无头浏览器,它实际上可以解析和执行javascript(如果你知道ruby你可以开始寻找黄瓜 - 硒 - 氯化物组合),或者只是使用你的浏览器和greasemonkey / tampermonkey实际模仿一个真正的用户浏览得分刮擦。

答案 2 :(得分:1)

加载(HTML)页面后,可能会生成内容(通过Javascript,如ajax调用)。您可以在停用Javascript后在Chrome中加载页面来检查。

我认为你不能指示RCurl执行Javascript ......