2017-02-01 3 views

Antwort

3

Also habe ich herausgefunden, wie dies mit der Google Page Speed API begraben in der documentation.

Die Erklärung zu TL: DR lautet, dass Sie die URL nach der Aktivierung der Google Pagespeed-API in der Cloud Console durch die URL ersetzen können (und in einem Browser müssen Sie außerdem einen authentifizierten Google Cloud-Nutzer angemeldet haben).

https://www.googleapis.com/pagespeedonline/v2/runPagespeed?url={YOUR_SITE_URL}/&filter_third_party_resources=true&locale=en_US&screenshot=false&strategy=desktop&key={YOUR_API_KEY} 

Wie Sie aus dem obigen Link sehen können, benötigen Sie einen Google Pagespeed API Key. Dies sind von Grund auf Setup-Anweisungen. Wenn sich Ihr Projekt bereits in der Cloud Console befindet, können Sie die ersten Schritte überspringen.

  1. Cloud gehen https://console.developers.google.com
  2. Zeichen für ein Konto, wenn nötig.
  3. Erstellen eines Projekts
  4. Zum Menü> API-Manager> Credentials
  5. Anmeldeinformationen Schaltfläche Erstellen> API Key
  6. Copy Key schließen Sie dann treffen
  7. Menü> Armaturenbrett> API aktivieren
  8. Verwenden Suche finden Pagespeed Insights API und klicken sie darauf
  9. Verwenden sie die „|> FREIGABE“ Taste in der Nähe der Titel

Sobald Sie einen API-Key haben Sie die Werte in der URL ersetzen können, sollte es in etwa so aussehen:

https://www.googleapis.com/pagespeedonline/v2/runPagespeed?url=https://www.example.com/&filter_third_party_resources=true&locale=en_US&screenshot=false&strategy=desktop&key=FaKeApIKey29nS8U22mM 

Der Parameter Strategie = Desktop in der URL kann zur Strategie = mobil geändert werden. Für Mobilgeräte erhalten Sie eine Geschwindigkeit und eine Benutzerfreundlichkeit. Hier ist, was der Beginn der JSON wie folgt aussieht:

{ 
"kind": "pagespeedonline#result", 
"id": "https://www.example.com/fake/page”, 
"responseCode": 200, 
"title": "Example Domain", 
"ruleGroups": { 
    "SPEED": { 
     "score": 100 
    }, 
    "USABILITY": { 
     "score": 100 
    } 
    }, 
    ....continued... 

So automatisiert ich dies eine Python & Python Unit Test verwendet wird.

import requests 
import json 
import unittest 
from globes import * 

api_key = '' # Add API key. Found here: https://console.developers.google.com/apis/credentials/key/ 
base = 'http://example.com' 
locale_code = 'en_US' 

def get_insights_json(self, page_url, local, device_type, api_key, speed_or_useability, expected_score): 
    url = 'https://www.googleapis.com/pagespeedonline/v2/runPagespeed?url=' + page_url + '&filter_third_party_resources=true&locale=' + local + '&screenshot=false&strategy=' + device_type + '&key=' + api_key 
    # print "Getting :: " + url 
    r = requests.get(url) 
    return_code = r.status_code 
    try: self.assertEqual(return_code, 200) 
    except AssertionError, e: self.verificationErrors.append(str(page_url) + " did not return 200") 
    return_text = r.text 
    return_json = json.loads(return_text) 
    score = return_json['ruleGroups'][speed_or_useability]['score'] 
    print 'Getting ' + speed_or_useability + ' for ' + page_url + ' and got a score of ' + str(score) 
    try: self.assertTrue(int(score) >= expected_score) 
    except AssertionError, e: self.verificationErrors.append(str(page_url) + ' expected ' + device_type + ' speed score to be greater than ' + str(expected_score) + ', instead got ' + str(score)) 

class TestAllAPIs(unittest.TestCase): 

    def setUp(self): 
     self.verificationErrors = [] 
     self.maxDiff = None 

    def tearDown(self): 
     self.assertEqual([], self.verificationErrors) 

    def test_desktop_speed(self): 
     current_page = base + '' # You could add to the url to test other pages, I tend to do this is a loop using a list I set up by base url. 
     device_type = 'desktop' 
     target = 'SPEED' 
     get_insights_json(self, current_page, locale_code, device_type, api_key, target, 80) 

    def test_mobile_speed(self): 
     current_page = base + '' 
     device_type = 'mobile' 
     target = 'SPEED' 
     get_insights_json(self, current_page, locale_code, device_type, api_key, target, 80) 

    def test_mobile_useability(self): 
     current_page = base + '' 
     device_type = 'mobile' 
     target = 'USABILITY' 
     get_insights_json(self, current_page, locale_code, device_type, api_key, target, 80) 

if __name__ == "__main__": 
    unittest.main() 

Es gibt eine Sache, die mir ein wenig von einem Geheimnis ist deshalb Browser mit Google authentifiziert werden müssen JSON erhalten von URL aber Python-Anfragen nicht.

Verwandte Themen