如何使用Google协作环境中的Google搜索控制台API



我想使用谷歌协作环境中的谷歌搜索控制台api。

我尝试了这个代码,但我得到了一个错误"TypeError:应为str、bytes或os.PathLike对象,而不是dict"。

我知道files.upload((返回的类型不适合ServiceAccountCredentials.from_json_keyfile_name(KEY_FILE_LOCATION,SCOPES(的预期类型。

然而,我不知道如何纠正。

这是第一次在Stack Overflow中提问,我是编程和英语的初学者,你能教我吗?

import pandas as pd
from googleapiclient.discovery import build
from oauth2client.service_account import ServiceAccountCredentials
SCOPES = ['https://www.googleapis.com/auth/webmasters.readonly']
from google.colab import files
uploaded = files.upload()
KEY_FILE_LOCATION = uploaded
credentials = ServiceAccountCredentials.from_json_keyfile_name(KEY_FILE_LOCATION, SCOPES)
webmasters = build('webmasters', 'v3', credentials=credentials)
url = '*********'
d_list = ['query', 'page']
start_date = '2019-12-01'
end_date = '2019-12-31'
row_limit = 5000
body = {
'startDate': start_date,
'endDate': end_date,
'dimensions': d_list,
'rowLimit': row_limit
}
response = webmasters.searchanalytics().query(siteUrl=url, body=body).execute()
df = pd.io.json.json_normalize(response['rows'])
for i, d in enumerate(d_list):
df[d] = df['keys'].apply(lambda x: x[i])
df.drop(columns='keys', inplace=True)
df.to_csv('{}.csv'.format(start_date), index=False)
print(df)

我解决了它。首先,我将Key_file上载到与此程序文件相同的目录中。然后,我通过"挂载"连接了程序和Google Drive帐户。最后,我得到了jsonkey_file的绝对路径。

import pandas as pd

from googleapiclient.discovery import build
from oauth2client.service_account import ServiceAccountCredentials
SCOPES = ['https://www.googleapis.com/auth/webmasters.readonly']
from google.colab import drive
drive.mount('/content/drive')
KEY_FILE_LOCATION = '/content/drive/My Drive/<path-to-json>'
credentials = ServiceAccountCredentials.from_json_keyfile_name(KEY_FILE_LOCATION, scopes=SCOPES)
webmasters = build('webmasters', 'v3', credentials=credentials)
url = '*********'
d_list = ['query', 'page']
start_date = '2019-12-01'
end_date = '2019-12-31'
row_limit = 5000
body = {
'startDate': start_date,
'endDate': end_date,
'dimensions': d_list,
'rowLimit': row_limit
}
response = webmasters.searchanalytics().query(siteUrl=url, body=body).execute()
df = pd.io.json.json_normalize(response['rows'])
for i, d in enumerate(d_list):
df[d] = df['keys'].apply(lambda x: x[i])
df.drop(columns='keys', inplace=True)
df.to_csv('{}.csv'.format(start_date), index=False)
print(df)

最新更新