Google Indexing API - Неверный атрибут. URL не в стандартном формате URL - но мой URL правильный

В настоящее время я использую API индексации v3.

Когда я использую этот API в цикле, я получил эту ошибку:

Неверный атрибут. URL не в стандартном формате URL

Но я почти уверен, что мой URL правильный, потому что он загружается с консоли поиска Google:

Вот код:

from oauth2client.service_account import ServiceAccountCredentials
import httplib2
import json

import pandas as pd

JSON_KEY_FILE = "key.json"
SCOPES = ["https://www.googleapis.com/auth/indexing"]

credentials = ServiceAccountCredentials.from_json_keyfile_name(JSON_KEY_FILE, scopes=SCOPES)
http = credentials.authorize(httplib2.Http())

# This file contains 2 column, URL and date
csv = pd.read_csv("my_data.csv")
csv[["URL"]][0:10].apply(lambda x: indexURL(x.to_string(), http), axis=1)

def indexURL(url, http):

    ENDPOINT = "https://indexing.googleapis.com/v3/urlNotifications:publish"

    content = {}
    content['url'] = url
    content['type'] = "URL_UPDATED"
    json_ctn = json.dumps(content)

    response, content = http.request(ENDPOINT, method="POST", body=json_ctn)

    result = json.loads(content.decode())

    if("error" in result):
        print("Error({} - {}): {}".format(result["error"]["code"], result["error"]["status"], result["error"]["message"]))
    else:
        print("urlNotificationMetadata.url: {}".format(result["urlNotificationMetadata"]["url"]))
        print("urlNotificationMetadata.latestUpdate.url: {}".format(result["urlNotificationMetadata"]["latestUpdate"]["url"]))
        print("urlNotificationMetadata.latestUpdate.type: {}".format(result["urlNotificationMetadata"]["latestUpdate"]["type"]))
        print("urlNotificationMetadata.latestUpdate.notifyTime: {}".format(result["urlNotificationMetadata"]["latestUpdate"]["notifyTime"]))

Вот список примеров URL:

Может кто-нибудь сказать мне, что не так с моим кодом?

Заранее большое спасибо за вашу помощь.

1 ответ

Решение

Кажется, что даже если я подам заявку .strip() в каждом ряду есть еще \n в конце каждого URL.

Поэтому вместо того, чтобы помещать строки один за другим в лямбду, я помещаю всю серию в лямбду и использую цикл for для ее обработки.

Весь рабочий пример здесь:

Google Indexing API v3, рабочий пример с Python 3

Другие вопросы по тегам