在r中使用GTmetrix REST API v2.0



我正在尝试使用GTmetrix集成某些网站的性能测试。有了这个API,我就可以使用Microsoft Excel中的SEO连接器工具运行测试并提取结果。但是,它在旧版本的API中使用xml,并且其中不提供一些新的测试。最新版本为2.0

xml的链接在这里:GTmetrix xml for API 0.1

我尝试使用库httr和jsonlite。但是,我不知道如何通过API进行认证,运行测试并提取结果。

API的文档可在API documentation中找到。

library(httr)
library(jsonlite)
url  <- "https://www.berkeley.edu" # URL to be tested
location <- 1 # testing Location
browser <- 3 # Browser to be used for testing
res  <- GET("https://gtmetrix.com/api/gtmetrix-openapi-v2.0.json")
data <- fromJSON(rawToChar(res$content))

更新日期:20121-11-08:

我制作了一个小库,通过r与GTmetrix对话。有一些基本的完整性检查,但显然这仍在进行中,并且存在(潜在的严重)错误。不过,请随意查看。希望得到一些反馈。

# Install and load library.
devtools::install_github("RomanAbashin/rgtmx")
library(rgtmx)

更新2021年11月12日:它现在可以在CRAN。: -)

# Install and load library.
install_packages("rgtmx")
library(rgtmx)

开始测试(并得到结果)

# Minimal example #1.
# Returns the final report after checking test status roughly every 3 seconds. 
result <- start_test("google.com", "[API_KEY]")

这将启动一个测试并等待生成报告,以data.frame的形式返回结果。或者,您可以简单地通过参数wait_for_completion = FALSE返回测试ID和其他元数据。

# Minimal example #2.
# Returns just the test ID and some meta data.
result <- start_test("google.com", "[API_KEY]", wait_for_completion = FALSE)

其他可选参数:locationbrowser,report,retention,httpauth_username,httpauth_password,adblock,cookies,video,stop_onload,throttle,allow_url,block_url,dns,simulate_device,user_agent,browser_width,browser_height,browser_dppx,browser_rotate.

显示可用浏览器

show_available_browsers("[API_KEY]")

显示可用位置

show_available_locations("[API_KEY]")

获得特定测试

get_test("[TEST_ID]", "[API_KEY]")

获取具体报告

get_report("[REPORT_ID]", "[API_KEY]")

获取所有测试

get_all_tests("[API_KEY]")

获取帐户状态

get_account_status("[API_KEY]")

原始答:

其实很简单:

0。设置测试参数

# Your api key from the GTmetrix console.
api_key <- "[Key]"
# All attributes except URL are optional, and the availability
# of certain options may depend on the tier of your account.
# URL to test.
url <- "https://www.worldwildlife.org/"
# Testing location ID.
location_id <- 1
# Browser ID.
browser_id <- 3

1。开始测试

res_test_start  <- httr::POST(
url = "https://gtmetrix.com/api/2.0/tests",
httr::authenticate(api_key, ""),
httr::content_type("application/vnd.api+json"),
body = jsonlite::toJSON(
list(
"data" = list(
"type" = "test",
"attributes" = list(
"url" = url,
# Optional attributes go here.
"location" = location_id,
"browser" = browser_id
)
)
),
auto_unbox = TRUE
),
encode = "raw"
)

2。获取测试ID

test_id <- jsonlite::fromJSON(rawToChar(res_test_start$content))$data$id

3。获取报表ID

# Wait a bit, as generating the report can take some time.
res_test_status <- httr::GET(
url = paste0("https://gtmetrix.com/api/2.0/tests/", test_id),
httr::authenticate(api_key, ""),
httr::content_type("application/vnd.api+json")
)
# If this returns the test ID, the report is not ready, yet.
report_id <- jsonlite::fromJSON(rawToChar(res_test_status$content))$data$id

4。得到报告

res_report <- httr::GET(
url = paste0("https://gtmetrix.com/api/2.0/reports/", report_id),
httr::authenticate(api_key, ""),
httr::content_type("application/vnd.api+json")
)
# The report is a nested list with the results as you know them from GTmetrix.
report <- jsonlite::fromJSON(rawToChar(res_report$content))$data

我有点想为此构建一些东西,因为似乎没有R库…

相关内容

  • 没有找到相关文章

最新更新