【问题标题】:Select download links from HTML从 HTML 中选择下载链接
【发布时间】:2016-01-21 15:59:08
【问题描述】:

考虑一个包含许多下载数据链接的网页。

我想选择“r”数据格式的链接。目标是将它们与页面的源代码隔离(在我登录后)。

conn = url("http://www.icpsr.umich.edu/icpsrweb/ICPSR/studies/35536?
searchSource=find-analyze-home&sortBy=&q=GSS")
html_code <- readLines(conn)
close(conn)
html_code

html_code 的结果由数千行明显孤立的 HTML 代码组成,这些代码在 R 控制台中不可见,即使数据已正确下载。 IE。如果我将控制台的明显空板复制到文本编辑器,则 HTML 代码是可见的。因此,我很难确定我需要的信息。

如何更好地可视化下载的数据?

【问题讨论】:

标签: html r web-scraping


【解决方案1】:

一种解决方案是利用rvest 包:

# install.packages("rvest")
library(rvest)

page <- read_html("http://www.icpsr.umich.edu/icpsrweb/ICPSR/studies/35536?searchSource=find-analyze-home&sortBy=&q=GSS")

# grab all of the links
links <- page %>%
  html_nodes("a") %>%
  html_attr("href")

# find the links that contain 'rdata'
contains_rdata <- grep("rdata", links)
links[contains_rdata]
# [1] "http://www.icpsr.umich.edu/cgi-bin/bob/terms2?study=35536&ds=&bundle=rdata&path=ICPSR" 
# [2] "http://www.icpsr.umich.edu/cgi-bin/bob/terms2?study=35536&ds=1&bundle=rdata&path=ICPSR"
# [3] "http://www.icpsr.umich.edu/cgi-bin/bob/terms2?study=35536&ds=2&bundle=rdata&path=ICPSR"
# [4] "http://www.icpsr.umich.edu/cgi-bin/bob/terms2?study=35536&ds=3&bundle=rdata&path=ICPSR"
# [5] "http://www.icpsr.umich.edu/cgi-bin/bob/terms2?study=35536&ds=4&bundle=rdata&path=ICPSR"

正如@hrbrmstr 所指出的,一个更强大、更精简的解决方案是仅针对具有 R 数据链接的锚标记:

page %>%
  html_nodes("a[data-package = 'r']") %>%
  html_attr("href")

如果你不喜欢链接,你可以使用:

html_attr(html_nodes(page, "a[data-package='r']"), "href")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-16
    • 1970-01-01
    • 1970-01-01
    • 2013-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多