根据名称信息检索Google学术搜索ID

时间:2017-10-31 11:47:03

标签: r rvest

我是经济学研究生,目前正在从事涉及Google学术搜索的研究项目。虽然经济学家通常使用Stata,但通过R可以更轻松地访问Google学术搜索,所以我一直在学习R在过去一周的工作方式。毋庸置疑,我是一名初学者,有很多我不太懂的东西。

我设法通过webscrape一个经济学家名单,并从这个列表中生成随机样本。我现在想获得一些有关这些学者的Google Scholar信息。为此,我计划使用图书馆的“学者”。

我的问题是'学者'要求提供Google学术搜索ID。我只有经济学家的名字,所以我想找回他们的身份证。

我基本上想为每个经济学家做一个谷歌学者查询: https://scholar.google.fr/scholar?hl=fr&as_sdt=0%2C5&q=“经济学家的名字”,并在HTML代码中找到Google学者ID。

我尝试与经济学家“Emmanuel Saez”开始: https://scholar.google.fr/scholar?hl=fr&as_sdt=0%2C5&q=Emmanuel+Saez&btnG=

相关的css节点是:“。go_rt2”,所以我的代码如下:

<form>
    <h3>Keyword: {{ keyword }}</h3>
    <div class="form-check">
        <label class="form-check-label">
            <input type="checkbox" class="form-check-input" id="{{ sentence_id }}" value="{{ sentence_id }}">
            {{ sentence }}
        </label>
        <label class="form-check-label">
            <input type="checkbox" class="form-check-input" id="{{ sentence_id }}" value="{{ sentence_id }}">
            {{ sentence }}
        </label>
        ...
    </div>
    <h3>Keyword: {{ keyword }}</h3>
    <div class="form-check">
        <label class="form-check-label">
            <input type="checkbox" class="form-check-input" id="{{ sentence_id }}" value="{{ sentence_id }}">
            {{ sentence }}
        </label>
        <label class="form-check-label">
            <input type="checkbox" class="form-check-input" id="{{ sentence_id }}" value="{{ sentence_id }}">
            {{ sentence }}
        </label>
        ...
    </div>
    ...
</form>

对象“text”看起来像这样:

page <- read_html("https://scholar.google.fr/scholar?hl=fr&as_sdt=0%2C5&q=Emmanuel+Saez&btnG=")
text <- html_nodes(page, ".gs_rt2")

我只是错过了最后一部分:如何告诉R在“user =”之后只选择12-char代码?

它必须非常明显,但我无法弄清楚如何做到这一点。如果有人可以帮助我,那就太好了。

谢谢, G. Gauthier

2 个答案:

答案 0 :(得分:2)

也许丢失了一些东西,但是要获取ID,仅使用 "build": "INLINE_RUNTIME_CHUNK=false && react-scripts build" 可能会更简单:

strsplit

这将从文本中返回Google Scholar ID(与上面相同)。

答案 1 :(得分:1)

最简单的方法可能是正则表达式。类似的东西:

user_code <- sub(".*user=([A-Za-z_]+)&.*", "\\1", text)

其中&#34; \ 1&#34;是括号中的东西的反向引用。请尝试?regexp?sub了解详情。