使用 rvest 和 selectorgadget 从 GEO 提取信息,得到错误:“类中的错误(输出)<-“XMLNodeSet”:尝试将属性设置为 NULL”

Posted

技术标签:

【中文标题】使用 rvest 和 selectorgadget 从 GEO 提取信息,得到错误:“类中的错误(输出)<-“XMLNodeSet”:尝试将属性设置为 NULL”【英文标题】:extract information from GEO using rvest and selectorgadget, get error:"Error in class(out) <- "XMLNodeSet" : attempt to set an attribute on NULL" 【发布时间】:2015-02-03 09:33:36 【问题描述】:

我想从this link 获取所有“样本”ID,我的意思是所有 ID,例如“GSM545657”、“GSM545658”...。我想使用新包rvest 来解决我的问题,但是我对CSS 和xpath 不熟悉。我使用selectorgadget 来获取CSS 选择器。 我选择了第一个 ID:“GSM545657”,它变成了绿色,然后我删除了我不想要的信息(它们变成了红色)。现在,所有样品 ID 都是绿色或红色。 CSS 选择器显示如下:"tr:nth-child(23) .eye-protector-processed a" 。我的代码是这样显示的

Library(rvest);
myhtml<-html("http://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE21610");
myhtml %>% html_nodes("tr:nth-child(23) .eye-protector-processed a") %>%html_text()

我解决了错误类中的错误(输出) 如果我只选择“GSM545665”和“GSM545666”等两个ID,我可以使用

myhtml %>% html_nodes("tr:nth-child(23) .eye-protector-processed a") %>%html_text()

得到结果,你能告诉我如何解决这个问题,我们将不胜感激。非常感谢!

【问题讨论】:

【参考方案1】:

我认为您使用了错误的选择器。这对我有用:

myhtml <- html("http://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE21610")
myhtml %>% 
  html_nodes("tr:nth-child(23) tr a") %>%
  html_text()

(但 rvest 应该会给出更好的错误。我会提交一个错误)

【讨论】:

非常感谢,它确实有效。但是我不太了解 CSS 选择器,所以我使用了 selectorgadget 工具,那么如何使用 selectorgadget 获得正确的结果。您是否有一些建议来学习如何获得正确的 css 选择器模式。再次感谢您! 我使用选择器小工具来生成选择器。 非常感谢。我也使用了选择器小工具,但我不明白为什么我得到了错误的 css 选择器。你能告诉我你的程序来获得正确的选择器吗?

以上是关于使用 rvest 和 selectorgadget 从 GEO 提取信息,得到错误:“类中的错误(输出)<-“XMLNodeSet”:尝试将属性设置为 NULL”的主要内容,如果未能解决你的问题,请参考以下文章

从R中的链接中提取标题

如何使用 R 在 html 中的注释标签内抓取表格?

如何使用 R 和 rvest 轮换代理和 IP 地址

使用 rvest 抓取类似名称的表

使用 rvest 在 Twitter 中抓取用户视频

R - 如何使用 rvest 或 rcurl 点击网页