如何将额外的参数传递给Google Pagespeed API服务对象

问题描述 投票:1回答:1

我正在使用Google Pagespeed API v4来提取大量网址的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()函数中添加一个额外的参数,我可以在其中区分移动和桌面?

python api google-api pagespeed
1个回答
1
投票

像这样:

for url in list_of_urls:
    service_list.append(ps_service.pagespeedapi().runpagespeed(url = url, strategy='mobile'))

谷歌使用的每个参数都可以通过这种方式发送

© www.soinside.com 2019 - 2024. All rights reserved.