有人会对此有所了解吗?
提前致谢!
library(httr)library(rvest)sp="Alnus japonica"res <- httr::POST(url ="http://apps.kew.org/wcsp/advsearch.do",body = List(page ="advancedSearch",AttachmentExist ="",family ="",placeOfPub ="",genus = unList(strsplit(as.character(sp),split=" "))[1],yearPublished ="",specIEs = unList(strsplit(as.character(sp),split=" "))[2],author ="",infrarank ="",infraEpithet ="",selectedLevel ="cont"),encode ="form") pg <- content(res,as="parsed") lnks <- HTML_attr(HTML_nodes(pg,"a"),"href")#how get the url of the link wth accepted name (in bold)?res2 <- try(GET(sprintf("http://apps.kew.org%s",lnks[grep("ID=",lnks)] [1])),silent=T)#this gets a link but often fails to get the bold one解决方法 首先,抓住
tidy-html5
(它几乎适用于所有东西)并安装它并确保它在你的PATH中. 正如我的评论所说,浏览器处理< b>外部< p>因为他们需要防d. libxml2没有.所以,我们需要首先清理它(我现在需要创建一个新的tIDyHTML包),然后处理整理版本:
library(xml2)library(httr)library(rvest)res <- httr::POST(url ="http://apps.kew.org/wcsp/advsearch.do",genus = "Alnus",specIEs = "japonica",encode ="form") tf <- tempfile(fileext=".HTML")cat(content(res,as="text"),file=tf)tIDy <- system2("tIDy",c("-q",tf),TRUE)pg <- read_HTML(paste0(tIDy,sep="",collapse=""))HTML_nodes(pg,xpath=".//p/b/a[contains(@href,'name_ID')]")## {xml_nodeset (1)}## [1] <a href="/wcsp/namedetail.do?name_ID=6471" p > b > a[href*='name_ID']")
UPDATE
我为libtIDy开始了一个基本的pkg包装器.如果您使用的是OS X并使用Homebrew,您可以执行:brew install tIDy-HTML5(安装上面的二进制文件和libtIDy库)和devtools :: install_github(“hrbrmstr / tIDyHTML”)来安装pkg.然后,它只是:
library(xml2)library(httr)library(rvest)library(HTMLtIDy)res <- httr::POST(url ="http://apps.kew.org/wcsp/advsearch.do",encode ="form") tIDy_HTML <- tIDy(content(res,as="text"))pg <- read_HTML(tIDy_HTML)HTML_nodes(pg,"p > b > a[href*='name_ID']")
我应该可以在windows& linux并使它成为一个真正的软件包(它是一个没有错误检查的薄包装器)但是这将在Todo上停留一段时间.
总结以上是内存溢出为你收集整理的html – 在R中标识粗体的网络链接全部内容,希望文章能够帮你解决html – 在R中标识粗体的网络链接所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)