rvest Ошибка в open.connection (x, rb): истекло время ожидания

Я пытаюсь очистить содержимое с http://google.com. появляется сообщение об ошибке.

library(rvest)  
html("http://google.com")

Ошибка в open.connection (x, "rb"):
Истекло время ожидания. Дополнительно:
Предупреждение: 'html' устарел.
Вместо этого используйте 'read_html'.
См. Справку (" Устарело ")

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


person user3267649    schedule 23.10.2015    source источник
comment
пробовали ли вы также команду read_html, поскольку сообщение об ошибке говорит, что html устарело ... Это может не решить вашу проблему, но, возможно, результат будет более полезным ...   -  person drmariod    schedule 23.10.2015
comment
да, сообщение следующее: Ошибка в open.connection (x, rb): Истекло время ожидания. Дополнительно: Предупреждающее сообщение: закрытие неиспользуемого соединения 3 (google.com)   -  person user3267649    schedule 26.10.2015
comment
на самом деле этот код отлично работает в моей домашней сети. но когда я пытаюсь использовать этот код в сети компании, возникает ошибка.   -  person user3267649    schedule 26.10.2015
comment
Кажется, не воспроизводится как проблема с кодом, это возвращает мне результат. Если вы выяснили, что происходит с сетью и как это обойти, вы можете опубликовать этот ответ.   -  person Sam Firke    schedule 09.11.2015
comment
Та же проблема для меня, по-видимому, из сети, которую я использую, Google запрашивает доказательство того, что я не бот, и страница, конечно же, отключается, когда запускается парсер.   -  person Dambo    schedule 17.07.2017


Ответы (5)


Я столкнулся с той же проблемой Error in open.connection(x, “rb”) : Timeout was reached при работе через прокси в офисной сети.

Вот что сработало для меня,

library(rvest)
url = "http://google.com"
download.file(url, destfile = "scrapedpage.html", quiet=TRUE)
content <- read_html("scrapedpage.html")

Кредит: https://stackoverflow.com/a/38463559

person user799188    schedule 03.03.2017
comment
Это сработало и для меня ... В моем случае я нашел более постоянное решение - установить переменные среды прокси. Вот шаги: stackoverflow.com/a/60100844/1839959 - person Stan; 06.02.2020
comment
Спасибо - это сработало для меня, используя сеть компании. - person Carlo Carandang; 25.03.2021

Вероятно, это проблема, связанная с тем, что ваш вызов read_html (или html в вашем случае) не идентифицирует себя должным образом на сервере, с которого он пытается получить контент, что является поведением по умолчанию. Используя curl, добавьте пользовательский агент к аргументу дескриптора read_html, чтобы ваш парсер идентифицировал себя.

library(rvest)
library(curl)
read_html(curl('http://google.com', handle = curl::new_handle("useragent" = "Mozilla/5.0")))
person genericgreatape    schedule 04.08.2016

Я столкнулся с этой проблемой, потому что мой VPN был включен. Сразу после выключения я попробовал еще раз, и проблема устранилась.

person Brent B    schedule 30.09.2017

Я столкнулся с аналогичной проблемой, и небольшой взлом решил ее. В гиперссылке было 2 символа, которые создавали для меня проблему. Поэтому я заменил «è» на «e» и «é» на «e», и это сработало. Но просто убедитесь, что гиперссылка остается действительной.

person Arpit Bajpai    schedule 08.04.2018

Я получил сообщение об ошибке, когда мой ноутбук был подключен к моему маршрутизатору по Wi-Fi, но у моего интернет-провайдера был какой-то сбой:

read_html(brand_url)
Error in open.connection(x, "rb") : 
  Timeout was reached: [somewebsite.com.au] Operation timed out after 10024 milliseconds with 0 out of 0 bytes received

В приведенном выше случае мой Wi-Fi все еще был подключен к модему, но страницы не загружались через rvest (ни в браузере). Это было временно и длилось ~ 2 минуты.

Также стоит отметить, что при полном отключении Wi-Fi появляется другое сообщение об ошибке:

brand_page <- read_html(brand_url)
Error in open.connection(x, "rb") : 
  Could not resolve host: somewebsite.com.au
person stevec    schedule 05.08.2020