Ошибка чтения URL: ошибка в open.connection (x, "rb"): ошибка HTTP 400 - PullRequest
0 голосов
/ 05 марта 2020

Я пытаюсь создать 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.

спасибо !! выделенный текст

...