Html 解析用rvest刮取的谷歌学者搜索结果

Html 解析用rvest刮取的谷歌学者搜索结果,html,r,rvest,stringr,xml2,Html,R,Rvest,Stringr,Xml2,我试图使用rvest将谷歌学者搜索结果的一页刮到作者、论文标题、年份和期刊标题的数据框中 下面这个简化的、可复制的例子是搜索Google Scholar的“顶点捕食者保护”的代码 注意:为了遵守服务条款,我只想处理手动搜索的第一页搜索结果。我不是在问自动化问题,以刮除额外的页面 以下代码已用于提取: 作者 论文标题 年 但它没有: 期刊名称 我想提取日志标题并将其添加到输出中 library(rvest) library(xml2) library(selectr) library(st

我试图使用
rvest
将谷歌学者搜索结果的一页刮到作者、论文标题、年份和期刊标题的数据框中

下面这个简化的、可复制的例子是搜索Google Scholar的“顶点捕食者保护”的代码

注意:为了遵守服务条款,我只想处理手动搜索的第一页搜索结果。我不是在问自动化问题,以刮除额外的页面

以下代码已用于提取:

  • 作者
  • 论文标题
但它没有:

  • 期刊名称
我想提取日志标题并将其添加到输出中

library(rvest)
library(xml2)
library(selectr)
library(stringr)
library(jsonlite)

url_name <- 'https://scholar.google.com/scholar?hl=en&as_sdt=0%2C38&q=apex+predator+conservation&btnG=&oq=apex+predator+c'
wp <- xml2::read_html(url_name)
# Extract raw data
titles <- rvest::html_text(rvest::html_nodes(wp, '.gs_rt'))
authors_years <- rvest::html_text(rvest::html_nodes(wp, '.gs_a'))
# Process data
authors <- gsub('^(.*?)\\W+-\\W+.*', '\\1', authors_years, perl = TRUE)
years <- gsub('^.*(\\d{4}).*', '\\1', authors_years, perl = TRUE)
# Make data frame
df <- data.frame(titles = titles, authors = authors, years = years, stringsAsFactors = FALSE)

df
两个问题:

  • 如何添加从原始数据中提取日志标题的列
  • 有没有参考资料可以让我阅读并了解更多关于如何为自己提取其他字段的信息,这样我就不用在这里提问了

  • 添加它们的一种方法是:

    library(rvest)
    library(xml2)
    library(selectr)
    library(stringr)
    library(jsonlite)
    
    url_name <- 'https://scholar.google.com/scholar?hl=en&as_sdt=0%2C38&q=apex+predator+conservation&btnG=&oq=apex+predator+c'
    wp <- xml2::read_html(url_name)
    # Extract raw data
    titles <- rvest::html_text(rvest::html_nodes(wp, '.gs_rt'))
    authors_years <- rvest::html_text(rvest::html_nodes(wp, '.gs_a'))
    # Process data
    authors <- gsub('^(.*?)\\W+-\\W+.*', '\\1', authors_years, perl = TRUE)
    years <- gsub('^.*(\\d{4}).*', '\\1', authors_years, perl = TRUE)
    
    
    leftovers <- authors_years %>% 
      str_remove_all(authors) %>% 
      str_remove_all(years)
    
    
    journals <- str_split(leftovers, "-") %>% 
                map_chr(2) %>% 
                str_extract_all("[:alpha:]*") %>% 
                map(function(x) x[x != ""]) %>% 
                map(~paste(., collapse = " ")) %>% 
                unlist()
    
    # Make data frame
    df <- data.frame(titles = titles, authors = authors, years = years, journals = journals, stringsAsFactors = FALSE)
    
    库(rvest)
    库(xml2)
    图书馆(选择器)
    图书馆(stringr)
    图书馆(jsonlite)
    url\u名称