google search console 도입
이번에 google search console 을 티스토리 블로그에 도입하면서 정말 많이 고생했다..
2주 전 신청했던 ads sens 는 승인이 나지도 않고,,, 구글 색인은 100개가 넘도록 색인이 생성되지 않는 문제가 발생했다.
원인을 열심히 검색해보았지만 URL 검사 후 색인 생성을 해야한다는 글을 보게되고 시도해봤는데 URL 검사는 대략 1-2분 색인생성 요청은 생성갯수 제한이 있었다.
하다보면서 너무 열받아서 그만 둘까? 생각도 해봤는데, 이렇게 불필요하게 수동으로 하는것도 열받고.. 크롤링 대기열에만 올려놓고 주구장창 기다리면서 매일 확인해야하니 짜증이 슬슬 올라왔다.
그래서 열심히 검색해서 자동화 코드를 찾아냈다.
물론 아래 코드는 기존에 있던 블로그에서 나온 코드와 좀 다르다.
기존 코드를 붙여넣고 계속 수정하면서 바로 실행이 가능하도록 조금씩 손을 봤다.
사실 파이썬은 블록체인 강의 들을때 한 것 말곤, 정말 처음이다 ㅎ_ㅎ... 그래도 저 색인생성 요청을 매일매일 하고 있을 생각을 하니 정신이 바짝 들면서 해결해봤다.
블로그의 인덱싱명을 글자로 표기
티스토리 설정에 들어가서 맨 하단에 위치한 [블로그 > 관리] 로 들어간 후, 주소 설정에 포스트 주소를 문자 로 설정해준다
크롤링을 할 때 무작위로 모바일 버전도 같이 할 경우, 구글을 동일한 내용을 가진 포스팅을 발견하면 크롤링에서 제외시킨다. 그렇기 때문에 최대한 겹치지 않도록 url을 유지해주는 것이 좋다.
구글 클라우드 플랫폼 Index API 설정
이럴때 필요한게 index api 이다 한마디로 소유권을 가지고 있어야 크롤링을 할 수 있기 때문에 구글 서치 콘솔에 사용자를 추가해야 한다. index api 에서 이메일을 생성 한 후 사용자를 추가해준다.
> indexing api 생성 그대로 따라하기
구글 서치 콘솔 소유권 추가
index api 를 그대로 따라해서 사용자 이메일을 얻었다면 [설정] 에 들어가 소유권을 가진 사용자를 해당 이메일로 추가해준다!
서비스 계정으로 OAuth 2.0 클라이언트 ID 만들기
클라이언트 ID 를 만들기 전에 상단바에서 google sheets 를 검색 후 해당 구글 시트 api 를 설치해준다.
그래야 색인생성요청에 사용할 클라이언트 ID JSON 파일을 얻을 수 있다.
자 이제, [IAM 및 관리자 > 서비스] 계정으로 들어가서
해당 서비스계정에서 [작업 > 키 관리]를 선택해준다.
그리고 키를 생성해주고 JSON 파일로 받는다.
코드 제작 with Python
코드 제작에 앞서, desktop 위치에 submit_urls.txt 파일을 미리 만들어놧다.
해당 텍스트 파일 안으로 크롤링할 내 블로그의 url 이 차곡차곡 쌓일 예정이다.
패키지 설치
pip install advertools
pip install oauth2client
pip install httplib2
search.py
import advertools as adv
# 사이트맵 주소를 넣어준다.
sitemap_urls = adv.sitemap_to_df("https://jikeun.tistory.com/sitemap.xml")
url = sitemap_urls["loc"].to_list()
submit_urls = []
for i in url :
text = i.find('/entry/') # entry 기준으로 아래 26 숫자가 바뀔 수 있다.
print(text) # text 숫자를 확인해 주고 아래 26을 바꿔준다.
if text == 26 :
submit_urls.append(i)
# submit_urls.txt 가 위치한 곳에 파일을 열고 submit_urls 요소를 넣은 후 닫아준다.
f = open("/Users/joeun/Desktop/submit_urls.txt", 'w', encoding='utf8')
for submit_urls in submit_urls :
f.write(submit_urls + '\n')
f.close()
search_user.py
from oauth2client.service_account import ServiceAccountCredentials
import httplib2
import json
import time
# 저장해 둔 text 파일을 열어준다
f = open("/Users/joeun/Desktop/submit_urls.txt", 'r', encoding='utf8')
url_lists = f.readlines()
for url in url_lists :
JSON_KEY_FILE = "/Users/joeun/Desktop/credentials.json" # JSON 위치
SCOPES = ["https://www.googleapis.com/auth/indexing"]
ENDPOINT = "https://indexing.googleapis.com/v3/urlNotifications:publish"
credentials = ServiceAccountCredentials.from_json_keyfile_name(JSON_KEY_FILE, scopes=SCOPES)
http = credentials.authorize(httplib2.Http())
content = {}
content['url'] = url.replace("\n","")
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(1)
print('끝!')
요렇게 뜨기 시작하면 성공이다!
* 참고사이트
'쬬의 기초정리' 카테고리의 다른 글
[javascript] FormData 에서 form 쉽게 넣어주기 정석방법 비교 append , stringify (0) | 2023.08.31 |
---|---|
[websoket] 웹소켓 사용해 데이터 호출하기 / 웹소켓 데이터보기 (0) | 2023.07.16 |
[BlockChain] 블록체인 개념/구조 쉽게 이해하기, 블록체인 코드 작성 (0) | 2023.07.01 |
[Git] git user name / email / password 기본정보 세팅하기 (0) | 2023.06.24 |
[javascript] 문자열을 숫자형으로 바꾸기 (0) | 2023.02.25 |