我是一名经济学研究生,目前正在从事一个涉及谷歌学者的研究项目。虽然经济学家通常使用Stata,但通过R可以更容易地访问Google学者,因此在过去的一周里,我一直在学习R是如何工作的。不用说,我是个初学者,有很多事情我并不真正理解。
我设法在网上收集了一份经济学家名单,并从这份名单中随机抽取了一个样本。现在我想了解一些关于这些学者的谷歌学者信息。为此,我计划使用图书馆的“学者”。
我的问题是,“学者”要求谷歌学者的ID。我只知道经济学家的名字,所以我想取回他们的身份证。
我基本上想为每个经济学家做一个谷歌学者查询:sdt=0%2C5&q=“经济学家的名字”,并在html代码中找到谷歌学者ID。
我试着与经济学家伊曼纽尔·萨伊兹(Emmanuel)合作起步:sdt=0%2C5&q=Emmanuel+Saez&btnG=
相关的css节点是:".gs_rt2",所以我的代码如下所示:
page <- read_html("https://scholar.google.fr/scholar?hl=fr&as_sdt=0%2C5&q=Emmanuel+Saez&btnG=")
text <- html_nodes(page, ".gs_rt2")对象"text“看起来是这样的:
[1] <h4 class="gs_rt2"><a href="/citations?user=qZpr_CQAAAAJ&hl=fr&oe=ASCII&oi=ao"><b...我只是遗漏了最后一部分:如何告诉R在"user=“之后选择12字符的代码?
这肯定很明显,但我就是想不出该怎么做。如果有人能帮我,那就太好了。
谢谢,G. Gauthier
发布于 2017-10-31 11:52:16
最简单的方法可能是正则表达式。类似于:
user_code <- sub(".*user=([A-Za-z_]+)&.*", "\\1", text)其中“1”是对括号中的内容的反向引用。尝试?regexp和?sub来了解更多信息。
发布于 2019-10-13 03:35:06
也许遗漏了一些东西,但是为了获得id,只使用strsplit可能更简单
gsid <- strsplit(as.character(text),"(user=)|&")[[1]][2]这将从文本中返回(与上面相同)。
https://stackoverflow.com/questions/47034638
复制相似问题