【发布时间】:2017-09-23 22:08:42
【问题描述】:
我需要从这个页面获取三个不同的数字(黄色,见图):
https://www.scopus.com/authid/detail.uri?authorId=7006040753
我通过rvest 和inspectorgadget 使用了这段代码:
site=read_html("https://www.scopus.com/authid/detail.uri?authorId=7006040753")
hindex=site %>% html_node(".row3 .valueColumn span")%>% html_text()
documents=site %>% html_node("#docCntLnk")%>% html_text()
citations=site %>% html_node("#totalCiteCount")%>% html_text()
print(citations)
我可以得到 h-index 和 documents 但引用不起作用
你能帮帮我吗?
【问题讨论】:
-
乍一看像是一个快速修复,但这个值似乎是动态加载的(如果你查看源代码,你会注意到数字没有出现在任何地方)意味着你会首先必须使用例如呈现网站PhantomJS 或 RSelenium,然后使用 rvest 下载/处理网站
-
我刚刚尝试了 PhantomJS 并且在这里也遇到了问题,因为页面处理似乎被阻止了。所以宁愿使用RSelenium(不幸的是我对此一无所知)或者可能使用文档的数量而不是可以更容易抓取的总引用(并且更有意义,因为它更重要的是有多少文件被引用和不是每个文档的频率)
-
您好 TomS,感谢您的评论...“如果您查看源代码,您会注意到数字没有出现在任何地方”是什么意思。实际上在 html 源代码中我找到了
<input type="hidden" name="ctoCount" value="51971">和<span id="totalCiteCount">51971</span>。 -
对不起,我有点不准确。如果您使用右键单击 -> 显示页面源代码(而不是例如浏览器的“检查元素”功能),它看起来像这样:
<span id="totalCiteCount"></span>这也是您在使用 PhantomJS 打开和下载页面时得到的结果 =>页面未呈现。此外,如果您刮取父节点div class="valueColumn" data-citedbythreshold="false">,您将获得除所需值之外的整行 -
嗨 Guglielmo,相关问题:您有没有找到一种方法来获取所有现有 Scopus 作者 ID 的列表?我注意到他们使用了多达 11 个看似随机的数字,因此仅抓取所有数字(990 亿页)似乎非常低效/不可能,但我在任何地方都找不到完整的列表......谢谢!
标签: web-scraping rvest