R: xmlParse 错误 "adding" 额外的“AND”到 URL link,解析失败
R: xmlParse incorrectly "adding" extra " AND " to URL link, parsing fails
我正在尝试解析 xml 来自 NIH 的 pubmed 系统的输出。我已经生成了要解析的 URL,但是 xmlParse() 函数似乎在我的包含运算符的 URL 中添加了额外的“AND”文本。
例如:
url <- 'http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term=smith+m[author]+AND+science[journal]'
di <- xmlParse(url)
dl <- xmlToList(di)
这会产生一个 "NULL" IdList(结果应该在其中):
> dl[["IdList"]]
NULL
检查 QueryTranslation 揭示了问题(参见:extra AND):
> dl[["QueryTranslation"]]
[1] "smith+m[author] AND +AND+science[journal]"
知道那里发生了什么吗?我构建的每个搜索字段或查询类型都会出现这种情况,这些搜索字段或查询类型具有 "AND" 或 "OR".
等运算符
一个干净的解析,找到 20 篇论文供参考:
> url <- 'http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term=smith+bm[author]'
> di <- xmlParse(url)
> dl <- xmlToList(di)
> length(dl[["IdList"]])
[1] 20
假设您想从头开始而不是我上面提到的包:
首先使用 httr
来检索负载,这不会弄乱 URL
library("XML")
library("httr")
url <- 'http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term=smith+m[author]+AND+science[journal]'
res <- GET(url)
di <- xmlParse(content(res, "text"))
dl <- xmlToList(di)
unname(unlist(dl[["IdList"]]))
[1] "25745065" "25430773" "25395526" "25104368" "24458648" "24264993" "24052300" "23869013"
[9] "23363771" "22936773" "22116878" "21940895" "21330515" "21097923" "20966241" "20150469"
[17] "19407144" "19150811" "19119232" "19119226"
我正在尝试解析 xml 来自 NIH 的 pubmed 系统的输出。我已经生成了要解析的 URL,但是 xmlParse() 函数似乎在我的包含运算符的 URL 中添加了额外的“AND”文本。
例如:
url <- 'http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term=smith+m[author]+AND+science[journal]'
di <- xmlParse(url)
dl <- xmlToList(di)
这会产生一个 "NULL" IdList(结果应该在其中):
> dl[["IdList"]]
NULL
检查 QueryTranslation 揭示了问题(参见:extra AND):
> dl[["QueryTranslation"]]
[1] "smith+m[author] AND +AND+science[journal]"
知道那里发生了什么吗?我构建的每个搜索字段或查询类型都会出现这种情况,这些搜索字段或查询类型具有 "AND" 或 "OR".
等运算符一个干净的解析,找到 20 篇论文供参考:
> url <- 'http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term=smith+bm[author]'
> di <- xmlParse(url)
> dl <- xmlToList(di)
> length(dl[["IdList"]])
[1] 20
假设您想从头开始而不是我上面提到的包:
首先使用 httr
来检索负载,这不会弄乱 URL
library("XML")
library("httr")
url <- 'http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term=smith+m[author]+AND+science[journal]'
res <- GET(url)
di <- xmlParse(content(res, "text"))
dl <- xmlToList(di)
unname(unlist(dl[["IdList"]]))
[1] "25745065" "25430773" "25395526" "25104368" "24458648" "24264993" "24052300" "23869013"
[9] "23363771" "22936773" "22116878" "21940895" "21330515" "21097923" "20966241" "20150469"
[17] "19407144" "19150811" "19119232" "19119226"