如何将额外参数传递给 Google Pagespeed API 服务对象
How to pass extra arguments to Google Pagespeed API service object
我正在使用 Google Pagespeed API v4 提取大量 URL 的 Pagespeed 分数。我想在我的 Pagespeed 调用中使用参数 strategy
测试桌面和移动设备。这在一般 API 调用中是可能的,但我找不到在批处理调用中传递这些参数的方法。
最小工作示例:
from apiclient.discovery import build
import requests
#define Google API key and API call
google_api_key = "MyKey"
#build service object to call PageSpeed, version 4, with MyKey
ps_service = build('pagespeedonline', 'v4', developerKey = google_api_key)
list_of_urls = [a list of several URLs]
#define function; make list of URLs with column for PageSpeed score
def list_websites(request_id, response, exception):
if exception is not None:
print("This is an exception: " + str(exception) + " " + request_id)
else:
score = response['ruleGroups']['SPEED']['score']
print(score)
#create URL batch
ps_batch = ps_service.new_batch_http_request(callback = list_websites)
service_list = []
for url in list_of_urls:
service_list.append(ps_service.pagespeedapi().runpagespeed(url = url))
for req in service_list:
ps_batch.add(req)
#execute API call by batch
ps_batch.execute()
尽管此方法适用于对 API 进行批量请求,但默认情况下它会根据所述 URL 的桌面视图(分析策略设置为桌面)计算速度分数,而我还希望收到策略设置为移动的批处理请求的分数,以根据 URL 的移动视图获得分数。
我的问题是,如何向 build() 函数添加一个额外的参数,以便在其中区分移动设备和桌面设备?
像这样:
for url in list_of_urls:
service_list.append(ps_service.pagespeedapi().runpagespeed(url = url, strategy='mobile'))
google 使用的每个参数都可以通过这种方式发送
我正在使用 Google Pagespeed API v4 提取大量 URL 的 Pagespeed 分数。我想在我的 Pagespeed 调用中使用参数 strategy
测试桌面和移动设备。这在一般 API 调用中是可能的,但我找不到在批处理调用中传递这些参数的方法。
最小工作示例:
from apiclient.discovery import build
import requests
#define Google API key and API call
google_api_key = "MyKey"
#build service object to call PageSpeed, version 4, with MyKey
ps_service = build('pagespeedonline', 'v4', developerKey = google_api_key)
list_of_urls = [a list of several URLs]
#define function; make list of URLs with column for PageSpeed score
def list_websites(request_id, response, exception):
if exception is not None:
print("This is an exception: " + str(exception) + " " + request_id)
else:
score = response['ruleGroups']['SPEED']['score']
print(score)
#create URL batch
ps_batch = ps_service.new_batch_http_request(callback = list_websites)
service_list = []
for url in list_of_urls:
service_list.append(ps_service.pagespeedapi().runpagespeed(url = url))
for req in service_list:
ps_batch.add(req)
#execute API call by batch
ps_batch.execute()
尽管此方法适用于对 API 进行批量请求,但默认情况下它会根据所述 URL 的桌面视图(分析策略设置为桌面)计算速度分数,而我还希望收到策略设置为移动的批处理请求的分数,以根据 URL 的移动视图获得分数。
我的问题是,如何向 build() 函数添加一个额外的参数,以便在其中区分移动设备和桌面设备?
像这样:
for url in list_of_urls:
service_list.append(ps_service.pagespeedapi().runpagespeed(url = url, strategy='mobile'))
google 使用的每个参数都可以通过这种方式发送