Я пытаюсь скрести все результаты Google Golopar по определенной теме, используя R. Это законно, и если да, возможно ли это? - PullRequest
0 голосов
/ 01 октября 2019

Я пытаюсь собрать все результаты исследования Google по данной теме, используя R. Это законно, и если да, то возможно ли это?

У меня есть некоторый опыт работы с языком, но не с кодировкой веб-сайта. и думаю, что я не смог выбрать правильные узлы CSS для анализа (я полагаю).

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

url <-'https://scholar.google.com/scholar?hl=en&as_sdt=0%2C38&q=apex+predator+conservation&btnG=&oq=apex+predator+c'
webpage <- read_html(url)

title_html <- html_nodes(webpage, 'a#rh06x-YUUvEJ')
title <- html_text(title_html)
head(title)

В конечном итоге, если бы я мог собрать и разделить все результаты ученых в файл CSV с заголовками, такими как «Заголовок», «Автор», «Год», «Журнал», это было бы здорово. Любая помощь приветствуется! Спасибо

1 Ответ

1 голос
/ 02 октября 2019

Что касается вашего кода, он у вас почти был - вы не выбрали правильный элемент. Я полагаю, что вы выбрали id, где я нашел html_nodes лучше всего работает при выборе class. Классы, которые вы ищете: gs_rt и gs_a.

С помощью regex вы можете затем обработать данные в желаемом формате, извлекая авторов и годы.

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)
...