我一周前开始使用R,并且我一直在努力从htmls中提取一些信息以便开始使用。
我知道这是一个经常而且基本的问题,因为我已经在不同的背景下问过这个问题了,我读了很多帖子。
我也知道我可以使用的功能:sub / str_match等。
我选择使用sub(),这是我的代码暂时的样子:
#libraries
library('xml2')
library('rvest')
library('stringr')
#author page:
url <- paste('https://ideas.repec.org/e/',sample[4,3],'.html',sep="")
url <- gsub(" ", "", url, fixed = TRUE)
webpage <- read_html(url)
#get all published articles:
list_articles <- html_text(html_nodes(webpage,'#articles-body ol > li'))
#get titles:
titles <- html_text(html_nodes(webpage, '#articles-body b a'))
#get co-authors:
authors <- sub(".* ([A-Za-z_]+),([0-9]+).\n.*","\\1", list_articles)
以下是list_articles的元素:
" Theo Sparreboom & Lubna Shahnaz, 2007.\n\"Assessing Labour Market
Vulnerability among Young People,\"\nThe Pakistan Development
Review,\nPakistan Institute of Development Economics, vol. 46(3), pages 193-
213.\n"
当我试图得到共同作者时,R给了我整个字符串而不仅仅是共同作者,所以我明确指出了错误的模式,但我不明白为什么。
如果有人可以帮助我,那就太好了。
希望你过得愉快, G. Gauthier
答案 0 :(得分:1)
这有用吗?
它表示从第一个大写字母中提取字符串,直到有逗号,空格和数字。
library(stringr)
#get co-authors:
authors <- str_extract(list_articles,"[[:upper:]].*(?=, [[:digit:]])")