Почему url.exists возвращает FALSE, если URL существует с помощью RCurl?

Например:

if(url.exists("http://www.google.com")) {
    # Two ways to submit a query to google. Searching for RCurl
    getURL("http://www.google.com/search?hl=en&lr=&ie=ISO-8859-1&q=RCurl&btnG=Search")
    # Here we let getForm do the hard work of combining the names and values.
    getForm("http://www.google.com/search", hl="en", lr="",ie="ISO-8859-1", q="RCurl", btnG="Search")
    # And here if we already have the parameters as a list/vector.
    getForm("http://www.google.com/search", .params = c(hl="en", lr="", ie="ISO-8859-1", q="RCurl", btnG="Search"))
}

Это пример из руководства по пакету RCurl. Однако это не работает:

> url.exists("http://www.google.com")
[1] FALSE

Я нашел ответ на этот вопрос здесь. Rcurl: url.exists возвращает false, если URL существует. Он сказал, что это потому, что пользовательский агент по умолчанию не является полезным. Но я не понимаю, что такое пользовательский агент и как его использовать.

Также эта ошибка произошла, когда я работал в моей компании. Я попробовал тот же код дома, и он работал найти. Я предполагаю, что это из-за прокси. Или есть некоторые другие причины, которые я не осознавал.

Мне нужно использовать RCurl для поиска моих запросов в Google, а затем извлечь информацию, такую ​​как заголовок и описания, с веб-сайта. В этом случае, как использовать пользовательский агент? Или пакет httr может сделать это?

1 ответ

Решение

Ребята. Большое спасибо за помощь. Я думаю, я только что понял, как это сделать. Важной вещью является прокси. Если я использую:

> opts <- list(
     proxy         = "http://*******",
     proxyusername = "*****", 
     proxypassword = "*****", 
     proxyport     = 8080
)
> url.exists("http://www.google.com",.opts = opts)
[1] TRUE

Тогда все сделано! Вы можете найти свой прокси под System ->proxy, если вы используете win 10. В то же время:

 > site <- getForm("http://www.google.com.au", hl="en",
                 lr="", q="r-project", btnG="Search",.opts = opts)
 > htmlTreeParse(site)
 $file
 [1] "<buffer>"
 .........

В getForm также должны быть введены опции. Здесь есть два автора ( настройки прокси-сервера RCurl по умолчанию и настройки прокси-сервера для R), отвечающие на один и тот же вопрос. Я не пробовал, как извлечь информацию отсюда.

Другие вопросы по тегам