首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当url.exists使用RCurl存在时,为什么RCurl返回FALSE?

当url.exists使用RCurl存在时,为什么RCurl返回FALSE?
EN

Stack Overflow用户
提问于 2016-11-02 22:44:15
回答 1查看 1.6K关注 0票数 0

例如:

代码语言:javascript
复制
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包手册中的一个示例。但是,它不起作用:

代码语言:javascript
复制
> url.exists("http://www.google.com")
[1] FALSE

我发现这里有一个答案,Rcurl: url.exists returns false when url does exists。它说这是因为默认的用户代理是没用的。但我不明白什么是用户代理,以及如何使用它。

而且,这个错误发生在我在我的公司工作的时候。我在家里尝试了相同的代码,结果找到了结果。所以我猜这是因为代理。或者还有其他一些我没有意识到的原因。

我需要使用RCurl搜索我的查询从谷歌,然后提取信息,如标题和描述从网站。在这种情况下,如何使用用户代理?或者,httr包能做到这一点吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-02 23:15:03

伙计们。非常感谢你的帮助。我想我刚想好了该怎么做。重要的是代理。如果我用:

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

那就完事了!如果使用win 10,您可以在System-> proxy下找到您的代理。同时:

代码语言:javascript
复制
 > 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 settingsProxy setting for R)回答同一个问题。我还没有试过如何从这里提取信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40391047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档