我正在尝试从具有多个表的网页中抓取一个表。我想从 https://www.census.gov/geo/reference/ansi_statetables.html 获取“各州和哥伦比亚特区的 FIPS 代码”表。我认为 XML::readHTMLTable()
是正确的方法,但是当我尝试以下操作时出现错误:
url = "https://www.census.gov/geo/reference/ansi_statetables.html"
readHTMLTable(url, header = T, stringsAsFactors = F)
named list() Warning message: XML content does not seem to be XML: 'https://www.census.gov/geo/reference/ansi_statetables.html'
当然,这并不奇怪,因为我没有向函数提供任何关于我想读取哪个表的指示。我已经在“检查”中研究了很长一段时间,但我没有将如何更精确地连接起来。似乎没有与我在文档或 SO 中找到的其他示例类似的表名称或类。想法?
最佳答案
考虑使用readLines()
来抓取html页面内容并在readHTMLTable()
中使用结果:
url = "https://www.census.gov/geo/reference/ansi_statetables.html"
webpage <- readLines(url)
readHTMLTable(webpage, header = T, stringsAsFactors = F) # LIST OF 3 TABLES
# $`NULL`
# Name FIPS State Numeric Code Official USPS Code
# 1 Alabama 01 AL
# 2 Alaska 02 AK
# 3 Arizona 04 AZ
# 4 Arkansas 05 AR
# 5 California 06 CA
# 6 Colorado 08 CO
# 7 Connecticut 09 CT
# 8 Delaware 10 DE
# 9 District of Columbia 11 DC
# 10 Florida 12 FL
# 11 Georgia 13 GA
# 12 Hawaii 15 HI
# 13 Idaho 16 ID
# 14 Illinois 17 IL
# ...
对于特定的数据帧返回:
fipsdf <- readHTMLTable(webpage, header = T, stringsAsFactors = F)[[1]]
关于r - 在R中查找html表名并抓取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39438951/