Я пытаюсь создать Yelp, который приводит к R по всем oop нескольким URL. Он работает для первых нескольких сайтов, но не работает после других URL. Я покажу ниже:
library('rvest')
library('ggplot2')
library('stringr')
#Creating the list of result pages urls to be scraped.
url <- 'https://www.yelp.com/search?find_desc=coffee%20shop&find_loc=Prague%2C%20Praha%2C%20Czech%20Republic&sortby=rating'
webpage <- read_html(url)
list_of_pages <- str_c(url, '&start=', seq(from=0,to=960,by=30))
#These are all the variables I want to scrape from the Yelp results page.
#1. Name
name_data_pg <- list()
for (i in 1:5) {
name_data_html_pg <- html_nodes(read_html(list_of_pages[i]), '.link-color--inherit__373c0__3dzpk.link-size--inherit__373c0__1VFlE')
name_data_pg[[i]] <- html_text(name_data_html_pg)
name_data_pg[[i]] <- name_data_pg[[i]][1:30] }
names <- unlist(name_data_pg)
#Creating urls for specific result pages.
library(urltools)
part1 <-'https://www.yelp.com/biz/'
part2 <- '-praha?osq=coffee+shop'
website_names <- list()
for (i in 1:length(names)) {
website_names[[i]] <- tolower(names[i])
website_names[[i]] <- gsub(" ", "-", website_names[i])
}
website_names <- unlist(website_names)
individual_pages <- list()
for (i in 1:length(website_names)) {
individual_pages[[i]] <- str_c(part1, website_names[i], part2) }
individual_pages <- unlist(individual_pages)
individual_pages[2] <- 'https://www.yelp.com/biz/la-boh%C3%A8me-caf%C3%A9-praha-2?osq=coffee+shop'
#These are the individual variables I want to scrape from the website.
#5. Phone Number
phone_data_pg <- list()
for (i in 1:150) {
phone_data_html_pg <- html_nodes(read_html(individual_pages[i]), '.island-section__373c0__3vKXy .text-align--left__373c0__2pnx_')
phone_data_pg[[i]] <- html_text(phone_data_html_pg)[3] }
phone_numbers <- unlist(phone_data_pg)
Итак, это работает, когда я читаю страницы результатов. read_ html не будет работать, когда я читаю переменную отдельных страниц. Я думаю, что это может быть из-за специальных символов в URL, которые я создаю? Я смотрю на кофейни в Праге, и в названиях компаний есть много специальных символов, так что, возможно, у них проблемы с их чтением. Код, который он возвращает: Ошибка в open.connection (x, "rb"): ошибка HTTP 400.
спасибо !! выделенный текст