在 R 中使用 GTmetrix REST API v2.0
Using GTmetrix REST API v2.0 in R
我正在尝试使用 GTmetrix 集成某些网站的性能测试。使用 API,我能够 运行 测试并使用 Microsoft Excel 中的 SEO 连接器工具提取结果。但是,它使用了 xml 和旧版本的 API,一些新的测试在这里不可用。最新版本为2.0
xml 的 link 在这里: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))
2021-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]")
这将开始测试并等待生成报告,return将结果设为 data.frame。或者,您可以通过参数 wait_for_completion = FALSE
.
简单地 return 测试 ID 和其他元数据
# Minimal example #2.
# Returns just the test ID and some meta data.
result <- start_test("google.com", "[API_KEY]", wait_for_completion = FALSE)
其他可选参数:location
,
browser
,
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 库...
我正在尝试使用 GTmetrix 集成某些网站的性能测试。使用 API,我能够 运行 测试并使用 Microsoft Excel 中的 SEO 连接器工具提取结果。但是,它使用了 xml 和旧版本的 API,一些新的测试在这里不可用。最新版本为2.0
xml 的 link 在这里: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))
2021-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]")
这将开始测试并等待生成报告,return将结果设为 data.frame。或者,您可以通过参数 wait_for_completion = FALSE
.
# Minimal example #2.
# Returns just the test ID and some meta data.
result <- start_test("google.com", "[API_KEY]", wait_for_completion = FALSE)
其他可选参数:location
,
browser
,
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 库...