#r #web-scraping #rcrawler
#r #соскабливание полотна #rcrawler #очистка веб-страниц
Вопрос:
Я заметил, что у нас здесь не так много вопросов о Rcrawler, и я подумал, что это отличный инструмент для очистки веб-сайта. Тем не менее, у меня есть проблема с указанием ему очистить несколько веб-сайтов, поскольку в настоящее время он может выполнять только 3. Пожалуйста, дайте мне знать, если у кого-нибудь есть опыт работы с этой проблемой. Спасибо.
Я попытался поместить все URL-адреса в список / вектор, но это по-прежнему не помогает. Вот мои коды очистки для получения названия, описания и ключевых слов веб-сайтов.
Rcrawler(Website = c("http://www.amazon.com", "www.yahoo.com", "www.wsj.com"),
no_cores = 3, no_conn = 3, MaxDepth = 0,
ExtractXpathPat = c('/html/head/title', '//meta[@name="description"]/@content', '//meta[@name="keywords"]/@content'),
PatternsName = c("Title", "Description", "Keywords"), saveOnDisk = FALSE)
Если у меня более 3 веб-сайтов, это выдаст мне эту ошибку:
Error in Rcrawler(Website = c("http://www.amazon.com", "www.yahoo.com", :
object 'getNewM' not found
Комментарии:
1. Возможно, вам потребуется обернуть ваш код в какую-либо функцию и передать его фреймворку, который может обрабатывать несколько ядер.
Ответ №1:
Что-то вроде этого.
library(tidyverse)
library(rvest)
# Create vector
mylist <- c("http://www.amazon.com", "http://www.yahoo.com", "http://www.wsj.com")
# Create the for statement
for (i in mylist)
{
#print(i)
webpage <- read_html(i)
print(webpage)
}
Или загрузите каждую страницу в список и проанализируйте список. Наконец, вы можете рассмотреть возможность сохранения ваших результатов в формате CSV. Вы должны знать, что очистка множества разных веб-страниц почти наверняка приведет к совершенно разным результатам. Я могу с уверенностью понять, почему человек хотел бы перебирать разные URL-адреса одного и того же сайта, но я не уверен, что вы получите, просматривая разные URL-адреса разных сайтов.
Ответ №2:
Я не уверен, как это будет работать в теории, но вы можете попробовать создать множество вызовов R crawler.
Например, в цикле while:
a <- list()
Rcrawler_function <- function(no_conn,no_cores,MaxDepth ,Obeyrobots,saveOnDisk,ExtractXpath)
{
x <- 1
while(x < 5)
{
tryCatch( expr = {
Rcrawler(ads_txt_4_cat$gen_link[x],no_conn = no_conn,no_cores = no_cores,MaxDepth = MaxDepth,Obeyrobots = Obeyrobots,saveOnDisk = saveOnDisk,ExtractXpathPat = ExtractXpath)
assign("DATA",DATA,envir = globalenv())
a[[x]] <<- DATA
x = x 1
}
, error=function(e){cat("ERROR :",conditionMessage(e), "n")})
}
}
Rcrawler_function(4,4,0,T,F,"body")