2016-11-02 2 views
0

Например:Почему 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 returns false when url does exists. Он сказал, что это из-за пользовательского агента по умолчанию, не полезно. Но я не понимаю, что такое агент пользователя и как его использовать.

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

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

+0

Я не могу воспроизвести эту проблему. 'url.exists (" http://www.google.com ") [1] TRUE' Ваша проблема не связана с пользовательским агентом. Эта проблема была специфична для сервера в этом вопросе и, конечно же, не относится к Google.com. Когда вы находитесь на компьютере, который не может связаться с Google через R, вы находитесь в сети компании? Вероятно, вам нужно направлять запросы R через прокси-сервер компании или VPN. –

+0

Да, это то, что я думаю. Я думаю, что не могу использовать это, потому что я использую сеть компании. Итак, не могли бы вы рассказать мне, как это сделать через прокси-сервер компании или VPN? Я знаю, что в RCurl есть параметр, называемый прокси. Я просто не знаю, как настроить. –

+0

Это зависит от вашей операционной системы, если это прокси или VPN, и от конкретной конфигурации. Вероятно, проще всего обратиться в службу технической поддержки вашей компании, если вы не знаете, что это было сделано. Вы можете * использовать эту опцию, но, вероятно, это было бы лучше, и может потребоваться прокси-туннель для всех R или RStudio, а не только для этой функции. –

ответ

0

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

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

Тогда все сделано! Вы можете найти свой прокси-сервер в разделе Система -> прокси, если вы используете выиграть 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 default proxy settings и Proxy setting for R), отвечая на тот же вопрос. Я не пробовал, как извлечь информацию здесь.

Смежные вопросы