r - 在R中查找html表名并抓取

标签 r xml screen-scraping

我正在尝试从具有多个表的网页中抓取一个表。我想从 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/

相关文章:

android - RecyclerView 位于工具栏下方

ruby - 如何抓取由 JavaScript 添加的动态内容的网页?

python - 做一个好公民和网络抓取

r - 为 R 中的每个级别选择前 80 个观察值

python - 使用 xml.etree.ElementTree 解析 XML 子元素

R/ Shiny : Change plot ONLY after action button has been clicked

iphone - 从服务器下载图像并仅覆盖修改后的图像

api - Hubspot 等网站如何跟踪入站链接?

c - 从 R 中的 .C 调用返回输出

重新格式化数值而不强制转换为字符