【问题标题】:How to isolate a single element from a scraped web page in R如何在 R 中从抓取的网页中隔离单个元素
【发布时间】:2011-03-01 05:32:28
【问题描述】:

我想用 R 来抓取这个页面:(http://www.fifa.com/worldcup/archive/germany2006/results/matches/match=97410001/report.html) 和其他人,以获取进球者和时间。

到目前为止,这就是我所拥有的:

require(RCurl)
require(XML)

theURL <-"http://www.fifa.com/worldcup/archive/germany2006/results/matches/match=97410001/report.html"
webpage <- getURL(theURL, header=FALSE, verbose=TRUE) 
webpagecont <- readLines(tc <- textConnection(webpage)); close(tc)  

pagetree <- htmlTreeParse(webpagecont, error=function(...){}, useInternalNodes = TRUE)

并且 pagetree 对象现在包含一个指向我解析的 html 的指针(我认为)。我想要的部分是:

<div class="cont")<ul>
<div class="bold medium">Goals scored</div>
        <li>Philipp LAHM (GER) 6', </li>
        <li>Paulo WANCHOPE (CRC) 12', </li>
        <li>Miroslav KLOSE (GER) 17', </li>
        <li>Miroslav KLOSE (GER) 61', </li>
        <li>Paulo WANCHOPE (CRC) 73', </li>
        <li>Torsten FRINGS (GER) 87'</li>
</ul></div>

但我现在不知道如何隔离它们,坦率地说,xpathSApplyxpathApply 让我迷惑了!

那么,有谁知道如何制定一个命令来吸出&lt;div class="cont"&gt; 标签中包含的元素?

【问题讨论】:

  • 在做这样的事情时要小心...在大多数情况下,FIFA 或 FIBA​​、NBA 等组织不允许使用他们的数据 - 简单地说:他们的数据是他们的财产!所以下次提供一些虚拟的 HTML 代码,或者只是指向一些无害的网站! =)

标签: xml r web-scraping rcurl


【解决方案1】:

这些问题在处理 R 中的 Web 抓取和 XML 时非常有帮助:

  1. Scraping html tables into R data frames using the XML package
  2. How to transform XML data into a data.frame?

关于您的特定示例,虽然我不确定您希望输出是什么样的,但这会将“得分目标”作为字符向量:

theURL <-"http://www.fifa.com/worldcup/archive/germany2006/results/matches/match=97410001/report.html"
fifa.doc <- htmlParse(theURL)
fifa <- xpathSApply(fifa.doc, "//*/div[@class='cont']", xmlValue)
goals.scored <- grep("Goals scored", fifa, value=TRUE)

xpathSApply 函数获取所有符合给定条件的值,并将它们作为向量返回。请注意我是如何寻找 class='cont' 的 div 的。使用类值通常是解析 HTML 文档的好方法,因为它们是很好的标记。

你可以随心所欲地清理它:

> gsub("Goals scored", "", strsplit(goals.scored, ", ")[[1]])
[1] "Philipp LAHM (GER) 6'"    "Paulo WANCHOPE (CRC) 12'" "Miroslav KLOSE (GER) 17'" "Miroslav KLOSE (GER) 61'" "Paulo WANCHOPE (CRC) 73'"
[6] "Torsten FRINGS (GER) 87'"

【讨论】:

  • 相当简洁,我很久以前就在寻找类似的东西,但最终还是使用了 Python!现在我可以运行更小的脚本并填充数据集!酷!
猜你喜欢
  • 2017-07-21
  • 1970-01-01
  • 2021-07-06
  • 2011-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多