当前通过将不同的字符串传递给html_session()方法来更改 user_agent 。
有没有办法在抓取网站时更改计时器上的 IP 地址?
我设法使用网站 api 从瑞典统计局检索了一些数据。这个问题的答案解决了我的大部分问题。
如何以不太详细的方式发布 JSON 格式的请求以从 R 中的 URL 获取 JSON 数据到 data.frame 中?
但我仍然有两个问题。
如果我的 json 问题中有带有变音符号的字符(如“Å”、“Ä”、“Ö”),我会从服务器收到“404”响应。
我正在尝试从此表下载数据:
按地区、就业、年龄和性别划分的 16 岁以上人口 (RAMS)。2004 - 2015 年
(点击“Continue”,然后点击“api for this table”就可以查询到网站上的api,但是必须把响应格式从“px”改为“json”。)
此代码有效:
library(jsonlite)
library(httr)
bodytxt <- '{
"query": [
{
"code": "Region",
"selection": {
"filter": "vs:RegionKommun07",
"values": [
"0114",
"1280"
]
}
},
{
"code": "Alder",
"selection": {
"filter": "item",
"values": [
"16-19"
]
}
},
{
"code": "Tid",
"selection": {
"filter": "item",
"values": [
"2015"
]
}
}
],
"response": …Run Code Online (Sandbox Code Playgroud) 我试图从这个网站上抓取数据,使用httr和rvest。经过多次抓取(大约 90 - 100 次),该网站会自动将我转移到另一个带有验证码的网址。
这是正常的网址: "https://fs.lianjia.com/ershoufang/pg1"
这是验证码网址: "http://captcha.lianjia.com/?redirect=http%3A%2F%2Ffs.lianjia.com%2Fershoufang%2Fpg1"
当我的蜘蛛遇到验证码网址时,它会告诉我停止并在浏览器中解决它。然后我在浏览器中手动解决它。但是当我运行蜘蛛并发送GET请求时,蜘蛛仍然被转移到验证码网址。同时在浏览器中,一切正常,即使我输入验证码网址,它也会将我转回浏览器中的正常网址。
即使我使用代理,我仍然遇到同样的问题。在浏览器中,我可以正常浏览网站,而蜘蛛一直在转移到验证码网址。
我想知道,
谢谢。
这是我的代码:
a <- GET(url, use_proxy(proxy, port), timeout(10),
add_headers('User-Agent' = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',
'Connection' = 'keep-alive',
'Accept-Language' = 'en-GB,en;q=0.8,zh-CN;q=0.6,zh;q=0.4,en-US;q=0.2,fr;q=0.2,zh-TW;q=0.2',
'Accept-Encoding' = 'gzip, deflate, br',
'Host' = 'ajax.api.lianjia.com',
'Accept' = '*/*',
'Accept-Charset' = 'GBK,utf-8;q=0.7,*;q=0.3',
'Cache-Control' = 'max-age=0'))
b <- a %>% read_html %>% html_nodes('div.leftContent') %>% html_nodes('div.info.clear') %>%
html_nodes('div.title') %>% html_text() …Run Code Online (Sandbox Code Playgroud) 我正在尝试下载一个 excel 文件,我有该文件的链接,但我需要先登录该页面才能下载该文件。我已经通过 rvest、rcurl 和 httr 成功通过了登录页面,但是我在登录后下载文件非常困难。
url <- "https://website.com/console/login.do"
download_url <- "https://website.com/file.xls"
session <- html_session(url)
form <- html_form(session)[[1]]
filled_form <- set_values(form,
userid = user,
password = pass)
## Save main page url
main_page <- submit_form(session, filled_form)
download.file(download_url, "./file.xls", method = "curl")
Run Code Online (Sandbox Code Playgroud)
当我运行 download.file 命令时,该文件会在我的工作目录中弹出,但它不是我要下载的文件,实际上只是一个损坏的 .XLS 文件,没有数据。
作为参考,如果我通过chrome登录网站,并在登录后将下载链接粘贴到浏览器窗口中,文件会自动开始下载。如果我在 IE 中执行相同操作,则会弹出文件下载对话框并询问我是否要保存文件。
可能的相关资料:
在此先感谢您的时间!
我在执行 ping 美国海军天文台 API 的 GET 调用时遇到困难。此请求以前有效,但现在因未知原因失败。
这是请求:
library(httr)
#ping API
try(RETRY("GET", url = "http://api.usno.navy.mil/rstt/oneday?date=07/10/2018&coords=41.2792778,%20-96.06442261&tz=-5", times = 20))
#ERROR MESSAGE (request always times out with error)
#Error in curl::curl_fetch_memory(url, handle = handle): SSL certificate problem: #unable to get local issuer certificate
#Request failed [ERROR]. Retrying in 1 seconds...
Run Code Online (Sandbox Code Playgroud)
我正在运行 R v3.5.1 和 RStudio v1.1.463。Curl 是 v3.2,httr 是 v1.3.1。
我尝试过的故障排除方法无效:
R 用户有什么想法吗?非常感谢任何帮助或指出正确方向!
我想使用 trelloR 包管理我的 Trello 卡和板,但是当我尝试使用该get_token功能创建令牌时,我在浏览器上收到一条错误消息:“无效的 return_url”。
my_token <- get_token(key = my_key, secret = my_secret)
Run Code Online (Sandbox Code Playgroud)
my_key是我的个人 Trello API 密钥,my_secret是我的 OAuth 秘密。我在 Trello 页面上找到了它们,该页面会在登录后为您提供身份验证代码:https : //trello.com/app-key
要使用 Trello API 并访问板,我需要一个令牌。此令牌由 httr 包使用 OAuth1.0 生成。事实上,功能get_token做这样的事情,根据的Jakub Chromec,作者和trelloR的维护者在这里:
my_token <- get_token(key = my_key, secret = my_secret)
Run Code Online (Sandbox Code Playgroud)
当我get_token用我的个人密钥和秘密执行这段代码或函数时,我被重定向到我的浏览器,这是正常的。如本页所述,应该会出现一个屏幕,要求我允许进行身份验证。但相反,我在浏览器中只有一条错误消息:“无效的 return_url”。
在 RStudio 控制台中,这仍然显示:
trello.app = httr::oauth_app(
appname = "trello-app",
key = my_key,
secret = my_secret)
trello.urls = httr::oauth_endpoint(
request = "OAuthGetRequestToken",
authorize ="OAuthAuthorizeToken?scope=read&expiration=30days&name=trello-app", …Run Code Online (Sandbox Code Playgroud) 我正在学习如何使用 R 中的 API 获取数据。我知道其目的httr是为curl 包提供一个包装器。\n我为了向 API 发出请求而遵循的文档具有以下 HTTP 请求格式。下面的代码将用于生成令牌
curl -s \\\n -d "client_id=clientid\xe2\x80\x9d \\\n -d "username=user\xe2\x80\x9d \\\n -d "password=pwd\xe2\x80\x9d \\\n -d "grant_type=password" \\\n -d "scope=openid email" \\\n "https://auth.com/token"\nRun Code Online (Sandbox Code Playgroud)\n\n之后,我将使用令牌通过此请求与 API 进行通信
\n\ncurl --header "Content-Type: application/json" \\\n --header "Accept: application/+json" \\\n --header "Authorization: Bearer token_goes_here\xe2\x80\x9c \\\n --request GET \\\n --url "https://api-sitename.org/sections?parent_id=0"\nRun Code Online (Sandbox Code Playgroud)\n\n最初,我在终端中运行这两个请求,它们成功了,我收到了 JSON 格式的响应。我的问题是,如何在 R 脚本中运行这些请求,以便获得响应并将它们存储在 R studio 全局环境中?我的目标是最终将数据集从API加载到Rstudio工作环境中。\nT
\n您将如何SOAP使用 R 请求 EUR-Lex 的 API?
EUR-Lex 是一个包含许多法律行为的欧盟数据库。在他们的 Web 服务手册中,他们描述了他们的SOAP系统,但没有描述如何使用 R。我已经尝试了一段时间就业httr,RCurl但没有成功。我想使用 R 而不是 SOAPUI。
这里有人有这方面的经验吗?
从下面的链接中,我应该按如下方式定义正文吗?
body <- "<sear:searchRequest>
<sear:expertQuery>${expert query}</sear:expertQuery> <sear:page>${page}</sear:page>
<sear:pageSize>${pageSize}</sear:pageSize> <sear:searchLanguage>${search language
</sear:searchLanguage>
</sear:searchRequest>"
Run Code Online (Sandbox Code Playgroud)
然后我如何将其与 结合起来headerfields使用RCurl或httr包?
以下三个答案似乎相关,但我不知道如何将它们应用到我的 EUR-Lex 示例中:
EUR-Lex API 链接:
我正在尝试使用 r 和 httr 访问domain.com.au api。我可以使用 API 密钥来实现此目的,但不能使用 OAuth2
该文档表明:
通过客户端凭证获取访问令牌 使用您的 client_id 和 client_secret 以及您需要的范围列表向https://auth.domain.com.au/v1/connect/token端点发出 POST 请求。请参阅 API 参考,了解每个端点所需的范围列表。尝试使用计划中未包含的范围将导致 400 invalid_scope 错误。该请求必须使用基本身份验证进行身份验证,其中 client_id 和 client_secret 分别对应于用户名和密码。
https://developer.domain.com.au/docs/v2/authentication/oauth/client-credentials-grant
卷曲的实现很简单:
curl -X POST -u 'clientid:secret' -H "Content-Type: application/x-www-form-urlencoded" -d 'grant_type=client_credentials&scope=api_listings_read%20api_agencies_read' 'https://auth.domain.com.au/v1/connect/token'
Run Code Online (Sandbox Code Playgroud)
它返回令牌而不进行任何重定向。
但是,我无法将其转换为等效的 httr POST 请求来获取令牌。我目前拥有的是:
oep <- oauth_endpoint(base_url = "https://auth.domain.com.au/v1/connect/token",
request = NULL,
access = "access_token" )
myapp <- oauth_app("domain",
key = "client_id_here",
# The secret isn't secrete. A user still has to authenticate when redirected.
secret = …Run Code Online (Sandbox Code Playgroud) 我目前正在尝试从国际货币基金组织的贸易统计方向下载特定系列,以计算国家之间的贸易量。有一个 r-packageimfr在这方面做得非常出色。然而,当我选择特定的一组时,我遇到了问题。
这段代码工作得很好,并为我提供了我感兴趣的五个国家的完整数据系列:
\nlibrary(imfr)\n\n# get the list of imf datasets \nimf_ids()\n\n# I am interested in direction of trade "DOT", so check the list of codes that are in the datastructure\nimf_codelist(database_id = "DOT")\n\n# I want the export and import data between countries FOB so "TXG_FOB_USD" and "TMG_FOB_USD"\nimf_codes("CL_INDICATOR_DOT")\n\n# works nicely for exports:\ndata_list_exports <- imf_data(database_id = "DOT", indicator = c("TXG_FOB_USD"), \n country = c("US","JP","KR"), \n start = "1995",\n return_raw = TRUE, \n freq = "A")\n\n# however the same code …Run Code Online (Sandbox Code Playgroud)