본문 바로가기
Python

[python] 파이썬 티스토리 구글, 빙 색인 index 제출 자동화

by 퍼포먼스마케팅코더 2022. 6. 19.
반응형

바빠서 시간이 부족하거나 파이썬 코딩이 처음인 사람들이 많다. 누구나 손쉽게 코딩을 배우고 바로 업무자동화,디지털마케팅 등에 쓰일만한 여러 가지 파이썬 코드를 만들고 있다. 이에 파이썬 구글, 빙 색인 제출 자동화 를 통해 파이썬 코드 공유드린다. 이에 오늘 하루도 여러분들의 컴퓨터 업무에 자유로운 나날이 길어지길 바란다. 오늘은 파이썬 구글, 빙 색인 제출 자동화 파이썬 코딩하는 방법을 가져왔다. 매우 쉬우니 바로 파이썬 설치하고 해당 코드에서 조금만 참고해서 돌리면 된다.

 

파이썬 티스토리 사이트맵 URL 리스트 모으자

 

먼저 중요한 것은 sitemap.xml 에서 제출할 URL을 긁는것이다. 아래와 같이 해당 티스토리의 URL을 먼저 긁자.

우리가 제출할 것은 PC 용이니까 pc 용 기준으로만 긁는다. PC url인 /entry/가 들어간 URL만 긁는다. /m/entry/ 로 들어간 URL은 구글이 이를 중복 URL로 인식할 수가 있어서 굉장히 부정적이다. 이는 생략하자. 

 

import advertools as adv

sitemap_urls = adv.sitemap_to_df("https://dataanalytics.tistory.com/sitemap.xml") #사이트맵 URL 

url = sitemap_urls["loc"].to_list()

submit_urls = [] #제출용

for i in url :
    text = i.find('/entry')
    if text == 33 :  #PC 기준만
        submit_urls.append(i)

        
f = open('C:/Users/user/raw/submit_urls/submit_urls.txt', 'w', encoding='utf8') #메모장에 넣자

for submit_url in submit_urls :
    f.write(submit_url + '\n')
f.close()

 

파이썬 티스토리 구글 색인 제출

 

티스토리 구글 색인 제출하기 위해서는 먼저 하기와 같이 구글 서치 콘솔에 제출된 티스토리에 이전에 google index API로 만들어둔 해당 계정에 소유자 권한을 넣어줘야한다. 그렇지 않으면 제출이 안됨! 다음과 같이 꼭 "소유자" 권한으로 index api 계정이 접근하여 처리할 수 있도록 한다.

 

파이썬 티스토리 구글 색인 제출

 

아래의 파이썬 코딩을 돌리면 하기와 같이 제출된 URL과 밑에 색인 요청된 정보가 나온다.

해당 정보는 일일 200건까지 색인 제출이 가능하다고 한다.

그래서 파이썬으로 티스토리 URL를 긁고 다음과 같이 내가 가진 대다수의 URL을 긁어서 대량 제출을 했다.  

보통 구글 서치 콘솔으론 하루 10개만 색인 요청이 된다. 너무 불편하니 그냥 자동화로 한방에 제출해서 끝내버리도록 하자. (google index api가 좋은 점은 수정해서 색인 요청인 경우 바로 색인 반영이 빠르다는 점이다. 보통 3일 정도 걸린다고 하니 이 때 site:url.com 으로 확인해보자.)

 

혹시 google index api 을 통한 api 키 발급도 필요하다면 하기  URL을 보면 된다.

https://www.jcchouinard.com/google-indexing-api-with-python/#:~:text=The%20indexing%20API%20is%20an,job%20postings%20and%20news%20articles.

 

Google Indexing API with Python | JC Chouinard

Learn SEO, Web development and Machine Learning

www.jcchouinard.com

 

파이썬 티스토리 구글 색인 제출 결과

 

from oauth2client.service_account import ServiceAccountCredentials
import httplib2
import json
import time

f = open('C:/Users/user/raw/submit_urls/submit_urls.txt', 'r',  encoding='utf8') 

url_lists = f.readlines()

#len(url_lists)

for url in url_lists[1:2] : #갯수조정
    
    JSON_KEY_FILE = "C:/Users/user/raw/google_index_api/credentials.json"   #refresh 체크해서 키 새로 발급해줘야됨

    SCOPES = [ "https://www.googleapis.com/auth/indexing" ]
    ENDPOINT = "https://indexing.googleapis.com/v3/urlNotifications:publish"


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

    # Build the request body
    print(url) #색인요청한 URL
    content = {}
    content['url'] = url
    content['type'] = "URL_UPDATED"
    json_content = json.dumps(content)
    response, content = http.request(ENDPOINT, method="POST", body=json_content)
    result = json.loads(content.decode()) 
    print(result)   #결과
    
    time.sleep(30)  #30초마다 한건씩
print("최종 URL 제출 완료되었습니다.")

 

파이썬 티스토리 빙 색인 제출

 

빙도 마찬가지로 먼저 빙 웹마스터도구에 들어간다.

들어가면 먼저 윗부분에 톱니바퀴가 보일 것이다. 그것을 클릭하고 API 액세스 권한을 클릭하자.

이후  API 키를 클릭해서 키를 발급받으면 된다.  그럼 이제 빙도 자동화로 색인 제출을 해보자.

 

 

파이썬 티스토리 빙 색인 제출

https://www.bing.com/webmasters/submiturl?siteUrl=https://dataanalytics.tistory.com/

 

아래는 sitemap에 나온 URL을 전부 빙 웹마스터도구로 submission API 를 통해 URL 제출을 한 것이다. 이에 티스토리에 제출되지 않은 URL이나, 색인 요청이 안된 Bing URL이 있다면 전부 제출하도록 하자. 이에 색인 요청 이후 보통 색인 결과까지 반영은 약 1~2일 정도 걸린다고는 하는데, 더 오래 걸리 수도 있으니 항상 확인해봐서 안된다면 계속 요청을 해두도록 하자.  

import advertools as adv #설치완료
import pandas as pd
import requests
import json
import time
import requests
import json
import time
import  datetime
import dateutil.parser
from bs4 import BeautifulSoup as bp

sitemap_urls = adv.sitemap_to_df("https://dataanalytics.tistory.com/sitemap.xml") #사이트맵 URL 

key = ""   #해당 키복사 입력
url = sitemap_urls["loc"].to_list()

def get_(data):
    headers={'User-Agent':'curl/7.12.1 ',
             'Content-Type':'application/json'}
    try:
        r = requests.post(url='https://ssl.bing.com/webmaster/api.svc/json/SubmitUrl?apikey='+str(key),json=data)
        print(r.status_code)
        print(r.content)
    except Exception.e:
        print(e)
    
    
print('start....','utf-8')
time.sleep(0.5)

site_url = 'https://dataanalytics.tistory.com/sitemap.xml' #사이트맵

try:
    print('Get sitemap....','utf-8')
    data_ = bp(requests.get(site_url).content,'lxml')
except Exception.e:
    print(e)

list_url=[]  #url 담기
list_date=[] #이건 필요없음

print('---------------------------------')
#for x1,y1 in enumerate(data_.find_all('url')):
for x,y in enumerate(data_.find_all('loc')):
    print(x,y.string)
    list_url.append(y.string)

for x2,y2 in enumerate(data_.find_all('lastmod')):
    startTime=y2.string
    startTime=dateutil.parser.parse(startTime)
    date1=(startTime.isoformat())[0:10]
    startTime=date1+" "+(startTime.isoformat())[11:19]
    startTime=datetime.datetime.strptime(startTime,"%Y-%m-%d %H:%M:%S")
    now=datetime.datetime.utcnow()
    endTime = datetime.datetime(now.year, now.month, now.day, now.hour, now.minute, now.second)
    date2=(endTime.isoformat())[0:10]
    date = endTime- startTime
    seconds=date.seconds
    if date1==date2 and seconds<600:#Can be modified
        list_date.append(x2)

print('---------------------------------')
print(list_date)
print('submit....','utf-8')


for i in url[1:334] : #해당 URL 제출 중복 여부 확인해야됨 #하루에 100건만 가능 (중요) 1만건도 있음!
    cjhurl = str(i)
    cjhpush={"siteUrl": "https://dataanalytics.tistory.com",#URL 주소 입력
            "url": cjhurl
            }
    print(cjhpush)
    get_(cjhpush)

 

이에 해당 쿼리까지 다 돌렸다면, 이제 구글, 빙에 인덱스 요청은 전부 다 완료된 것이다. 이를 통해 티스토리로 포스팅시 구글, 빙에도 잘 색인됐는지는 추가로 보지 않고 해당 파이썬 코딩을 통해 자동화하여 보기만 하면 끝난다.

 

반응형

댓글