본문 바로가기
애드센스 자동화 프로그램 개발 기록/티스토리 색인 자동화 프로그램 개발 기록

구글 Indexing API 사용법 (Python requests)

by 파이썬코딩대학 2025. 1. 16.

이 글은 티스토리 색인 자동화 프로그램 개발 과정중에 작성된 글 입니다 : )

만드는 과정 궁금하신 분들은 아래 링크를 들어와주세요 !

 

2025.01.15 - [파이썬 코딩 기록] - 티스토리 색인 자동화 프로그램 4일간의 개발 과정

 

티스토리 색인 자동화 프로그램 개발 과정

티스토리 색인 자동화 프로그램 왜 만드냐 ? 핫한 아이템들이 애드센스 블로그 운영인데애드센스 블로그 글 쓰는 사람들에게 도움되는 프로그램 만들어 보려고 ㅇㅇ 1. UI 기획하고 네이버 구

pythoncodinguniversity.tistory.com

 

 


 

 

라이브러리 설치

먼저 필요한 라이브러리 설치하시구요

pip install google-auth google-auth-oauthlib google-auth-httplib2 requests

 

Indexing API 활성화 & mykey.json 파일 다운로드 받아주셔야 코드 작동합니다

 

아래는 키 발급 받는 방법 안내글입니다.

 

2025.01.15 - [파이썬 코딩 기록] - 구글 Indexing API 발급 방법 과정 안내글 (쉽게 따라하기 가능)

 

구글 Indexing API Python Requests 예시 (발급 방법 포함)

이 글은 티스토리 색인 자동화 프로그램 개발 과정중에 작성된 글 입니다 : )만드는 과정 궁금하신 분들은 아래 링크를 들어와주세요 !  1. 구글 색인 자동화를 위한 Indexing API 발급 받아야함구

pythoncodinguniversity.tistory.com

 

키 발급 및 서치콘솔에 사용자 계정(email)추가 완료하신분은 아래 코드 바로 갖다 쓰시면 될것같습니다.

 

Python Requests + mykey.json 으로 Indexing API 요청 보내기

먼저 코드입니다.

아래 코드.py 와 같은 경로에 mykey.json 넣어두시고 url 변경해주시면 작동합니다 : )

import json
import requests
from google.oauth2 import service_account
from google.auth.transport.requests import Request

def get_access_token(service_account_file):
    credentials = service_account.Credentials.from_service_account_file(
        service_account_file,
        scopes=["https://www.googleapis.com/auth/indexing"]
    )

    credentials.refresh(Request())
    return credentials.token

def index_url(service_account_file, url, action):
    access_token = get_access_token(service_account_file)

    endpoint = "https://indexing.googleapis.com/v3/urlNotifications:publish"
    headers = {
        "Content-Type": "application/json",
        "Authorization": f"Bearer {access_token}"
    }

    payload = {
        "url": url,
        "type": action
    }

    response = requests.post(endpoint, headers=headers, json=payload)

    if response.status_code == 200:
        print("Indexing request successful.")
    else:
        print(f"Failed to send indexing request: {response.status_code}")

    return response.json()

if __name__ == "__main__":

    service_account_file = "./mykey.json"

    action = "URL_UPDATED"

    url = "https://pythoncodinguniversity.tistory.com/entry/%ED%8B%B0%EC%8A%A4%ED%86%A0%EB%A6%AC-%EB%B0%B1%EC%97%85-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8-%EA%B0%9C%EB%B0%9C%ED%96%88%EC%8A%B5%EB%8B%88%EB%8B%A4-URL-%EB%94%B8%EA%B9%8D-%EB%81%9D-%E3%85%85%E3%84%B1%E3%85%87"

    response = index_url(service_account_file, url, action)
    print(json.dumps(response, indent=2))

코드 설명 (한글)

1. 필수 라이브러리 임포트

import json
import requests
from google.oauth2 import service_account
from google.auth.transport.requests import Request
  • json: JSON 형식 데이터를 다루기 위해 사용합니다.
  • requests: HTTP 요청을 보내기 위해 사용합니다.
  • google.oauth2.service_account: 서비스 계정 키를 통해 Google API 인증을 처리합니다.
  • google.auth.transport.requests: 토큰 갱신을 위한 요청을 처리합니다.

2. 액세스 토큰 가져오기

def get_access_token(service_account_file):
    credentials = service_account.Credentials.from_service_account_file(
        service_account_file,
        scopes=["https://www.googleapis.com/auth/indexing"]
    )

    credentials.refresh(Request())
    return credentials.token
  • service_account_file: 서비스 계정 JSON 파일 경로를 받습니다.
  • scopes: 특정 API에 접근할 권한을 설정합니다. 여기서는 Indexing API 권한을 요청합니다.
  • credentials.refresh(Request()): 액세스 토큰을 갱신합니다.
  • return credentials.token: 생성된 토큰을 반환합니다.

3. URL 인덱싱 요청 보내기

def index_url(service_account_file, url, action):
    access_token = get_access_token(service_account_file)

    endpoint = "https://indexing.googleapis.com/v3/urlNotifications:publish"
    headers = {
        "Content-Type": "application/json",
        "Authorization": f"Bearer {access_token}"
    }

    payload = {
        "url": url,
        "type": action
    }

    response = requests.post(endpoint, headers=headers, json=payload)

    if response.status_code == 200:
        print("Indexing request successful.")
    else:
        print(f"Failed to send indexing request: {response.status_code}")

    return response.json()
  • access_token: get_access_token 함수에서 생성된 액세스 토큰을 사용합니다.
  • endpoint: Google Indexing API의 URL입니다.
  • headers:
    • Content-Type: 요청이 JSON 형식임을 명시합니다.
    • Authorization: 인증 토큰을 포함합니다.
  • payload:
    • url: 인덱싱할 대상 URL.
    • type: 동작 유형 (URL_UPDATED 또는 URL_DELETED).
  • requests.post: API 요청을 POST 메서드로 보냅니다.
  • response.status_code: 응답 상태 코드를 확인하여 성공 여부를 출력합니다.

4. 메인 실행부

if __name__ == "__main__":
    service_account_file = "./mykey.json"
    action = "URL_UPDATED"
    url = "https://yourwebsite.com/page"

    response = index_url(service_account_file, url, action)
    print(json.dumps(response, indent=2))
  • service_account_file: 서비스 계정 JSON 파일 경로를 지정합니다.
  • action: 수행할 작업 유형을 설정합니다.
  • url: 인덱싱할 URL을 입력합니다.
  • index_url: 위에서 정의한 함수 호출.
  • print(json.dumps(response, indent=2)): API 응답을 보기 쉽게 출력합니다.

이 코드로 Google Indexing API를 사용하여 웹페이지를 빠르게 인덱싱할 수 있습니다!