Я пытаюсь использовать rvest
, чтобы очистить одну страницу результатов поиска Google Scholar до фрейма данных автора, названия статьи, года и названия журнала.
Упрощенный воспроизводимый пример ниже представляет собой код, выполняет поиск в 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
источник: { ссылка }
Таким образом, вывод этого кода выглядит следующим образом:
#> titles
#> 1 [HTML][HTML] Saving large carnivores, but losing the apex predator?
#> 2 Site fidelity and sex-specific migration in a mobile apex predator: implications for conservation and ecosystem dynamics
#> 3 Effects of tourism-related provisioning on the trophic signatures and movement patterns of an apex predator, the Caribbean reef shark
#> authors years
#> 1 A Ordiz, R Bischof, JE Swenson 2013
#> 2 A Barnett, KG Abrantes, JD Stevens, JM Semmens 2011
Два вопроса:
- Как я могу добавить столбец с заголовком журнала, извлеченным из необработанных данных?
- Есть ли ссылка, где я могу прочитать и узнать больше о том, как разработать, как извлечь другие поля для себя, поэтому мне не нужно здесь спрашивать?