【问题标题】:How can I scrape table from PHP website using R?如何使用 R 从 PHP 网站上抓取表格?
【发布时间】:2019-12-14 23:46:08
【问题描述】:

希望从此页面上的表中将数据导入 R:

https://legacy.baseballprospectus.com/standings/index.php?odate=2019-09-10

我尝试了多种使用 XML 和 httr 的方法,但都没有成功。已经看过过去的帖子,包括:

Read data from a php website with R

Scraping html tables into R data frames using the XML package

想知道我是否没有使用来自源的正确表 ID,或者考虑到我当前使用的工具,表的格式是否不正确?

非常感谢任何和所有帮助!提前致谢!

【问题讨论】:

  • Abb,如果没有看到您的代码,我们无法评论使用正确的 ID 或有关您的流程的任何其他内容。
  • r2evans,老实说,我什至不认为代码在这一点上很重要,因为我在源代码中找不到正确的 id。如果您查看源代码,<table cellpadding="2" cellspacing="0" width="100%" class="dc"> 会突出显示我所追求的表格,但同样没有实际 ID。如果您在源中再往下拉一点,您将开始看到我所追求的实际数据......例如,<td class="ctr">2.6</td> 指的是标有“D1”的列下坦帕湾光线行中的 2.6。再次感谢您的时间和帮助!
  • 我想我明白了,但您似乎将 SO 视为免费代码服务,要求我们以零证明的努力提供抓取代码。旁注,您确定他们允许收集数据吗? terms of service 另有建议。

标签: php r function web-scraping


【解决方案1】:

这不会完全满足您的需求,但可能会帮助您入门:

library(XML)
fname <- "standings20190910.html"
download.file("https://legacy.baseballprospectus.com/standings/index.php?odate=2019-09-10", destfile=fname)
doc0 <- htmlParse(file=fname, encoding="UTF-8")
doc1 <- xmlRoot(doc0)
doc2 <- getNodeSet(doc1, "//table[@id='content']")
standings <- readHTMLTable(doc2[[1]], header=TRUE, skip.rows=1, stringsAsFactors=FALSE)

您可以查看您尝试抓取的表格的 HTML 源代码,然后尝试找出如何创建有用的 R 对象。仔细查看 XML 包手册 (https://cran.r-project.org/web/packages/XML/XML.pdf) 中getNodeSetreadHTMLTable 的文档。

【讨论】:

  • 蒙哥马利·克利夫特,非常感谢!这非常有帮助。我将进一步研究您建议的文档并从那里开始!再次感谢。
猜你喜欢
  • 2020-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-25
  • 2017-10-16
  • 2017-10-15
  • 2020-10-25
  • 2022-07-10
相关资源
最近更新 更多