๊ตฌ๊ธ ์์น ์ฝ์, ๋ค์ด๋ฒ ์์น ์ด๋๋ฐ์ด์ ์ฒ๋ผ ๋น์๋ ๋น ์น๋ง์คํฐ(bing webmaster)๋ผ๋ ๊ฒ์ด ์๋ต๋๋ค. ์๋์ผ๋ก ํฐ์คํ ๋ฆฌ ๊ฒ์๊ธ๋ค์ ๋ฑ๋กํ๋ค ๊ท์ฐฎ์์ ธ์ ์ด๋ฒ์ bing api๋ฅผ ์ฌ์ฉํ์ฌ ์ผ๊ด ๋ฑ๋ก์ ํด๋ณด์์ต๋๋ค. ์๋ ๋งํฌ๋ฅผ ๋ณด์๋ฉด ํด๋น ๋ด์ฉ์ ์ ์ ์์ต๋๋ค. ํ์ฌ ์์ฑํ ๊ฒ์๊ธ์ 1700~800๊ฐ ๊ทธ ์ด๋์ฏค์ธ๊ฐ ์ธ๋ฐ ํ๋ฃจ์ 100๊ฐ ๋ฑ๋ก์ผ๋ก ์ ํ์ด ์์ด ์ ์ฒด ์ ์ฉ์ ํ ์ ์์ต๋๋ค. ๊ฒฐ๊ตญ ๋ฐ์ ์๋์ผ๋ก ์งํํด์ผ ํ ๊ฒ ๊ฐ์ต๋๋ค. ์ฌํํผ ์์ค ์ฝ๋๋ฅผ ๊ณต์ ํด ๋ด ๋๋ค.
Bing Webmaster Tool Api key ๋ฐ๊ธ๋ฐฉ๋ฒ
๋น ์น๋ง์คํฐ์ ๊ฐ์ ์ ํ์ฌ ์ฌ์ดํธ๋ฅผ ๋ฑ๋กํ์ จ๋ค๋ฉด api key๋ฅผ ๋ฐ๊ธ๋ฐ์์ผ ํฉ๋๋ค. ๋ฐ๊ธํ๋ ๋ฐฉ๋ฒ์ ์๋์ ๊ฐ์ต๋๋ค. ์น๋ง์คํฐํ์ด์ง ์๋จ์ ๋ณด๋ฉด ํฑ๋๋ฐํด ๋ชจ์์ ์์ด์ฝ์ด ์์ต๋๋ค. ํด๋ฆญํ๋ฉด API ์ก์ธ์ค ๊ถํ์ด๋ผ๋ ๋ฉ๋ด๊ฐ ๋์ต๋๋ค. ํด๋ฆญํ์ฌ ๋ค์ด๊ฐ ๋ ๋ฒ์งธ API ํค ๋ฉ๋ด๋ฅผ ๋๋ฌ ๋ฐ๊ธํ๋ฉด ๋ฐ๋ก ์์ฑ๋ฉ๋๋ค.
ํฐ์คํ ๋ฆฌ API ํค ๋ฐ๊ธ ํ access token๊น์ง
์ผ์ ์ ํฐ์คํ ๋ฆฌ ๊ฒ์๊ธ ๋ฑ๋กํ๋ ๋ฐฉ๋ฒ์ด ์๊ธฐ ๋๋ฌธ์ ์ก์ธ์ค ํ ํฐ ๋ฐ๊ธ๊น์ง๋ ๊ทธ๋ฅ ์ง๋๊ฐ๊ฒ ์ต๋๋ค. ์๋ ๋งํฌ๋ฅผ ์ฐธ์กฐํ์ฌ access ํ ํฐ์ ๋ฐ๊ธ๋ฐ์ผ์๊ธธ ๋ฐ๋๋๋ค.
Bing webmast Tool API ์ด์ฉํ๊ธฐ
ํฐ์คํ ๋ฆฌ ์ก์ธ์คํ ํฐ๊ณผ bing api key๋ฅผ ์ ๋ ฅํ์ฌ ์๋ ์์ค๋ฅผ ์คํํ์๋ฉด ๋ฉ๋๋ค. ๋จ, ์๋ ์์ค๋ ํฐ์คํ ๋ฆฌ์ ๋ฑ๋ก๋ ์ ์ฒด ๊ธ URL ๋งํฌ๋ฅผ ๊ฐ์ ธ์ ํ๋ฒ์ ์ผ๊ด๋ก bing ์น๋ง์คํฐ ๋์ ๋ฑ๋กํ๋ ์์ค์ ๋๋ค. ํ๋ฃจ 100๊ฐ ์ ํ์ด๊ธฐ 100๊ฐ ์ด์ url์ด ์๋ค๋ฉด, ๊ฒฐ๊ณผ๋ ์ค๋ฅ๋ก ๋ฉ๋๋ค. ํฐ์คํ ๋ฆฌ๋ ๊ธ ๋ชฉ๋ก ์กฐํ ์ ํ์ด์ง ๊ฐ๋ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ 10๊ฐ์ฉ ๋ฐ์์ค๊ธฐ ๋๋ฌธ์ ํ์ด์ง ๋ฒํธ๋ฅผ ๋ค์ ๋ฃ์ด ๋ฆฌ์คํธ๋ฅผ ๋ฐ์์์ผ ํฉ๋๋ค.
ํฐ์คํ ๋ฆฌ ๋ชฉ๋ก ์กฐํ API ๊ฐ์ด๋ ๋งํฌ : https://tistory.github.io/document-tistory-apis/apis/v1/post/list.html
import requests
import json
# ํฐ์คํ ๋ฆฌ ๋ธ๋ก๊ทธ ์ด๋ฆ ๋ฑ๋ก๋ ๋๋ฉ์ธ ์ฃผ์ ๋งจ ์
blog_name = 'odaily'
# ๋ฐ๊ธ๋ฐ์ ํฐ์คํ ๋ฆฌ ์ก์ธ์ค ํ ํฐ
access_token = 'ํฐ์คํ ๋ฆฌ ์ก์ธ์ค ํ ํฐ์ ์
๋ ฅํ์๊ธธ ๋ฐ๋๋๋ค'
# ๋น ์น๋ง์คํฐ ๋๊ตฌ์์ ๋ฐ๊ธ๋ฐ์ API ํค
api_key = '๋น ์น๋ง์คํฐ ๋๊ตฌ์์ api๋ฅผ ๋ฐ๊ธ ๋ฐ์ ๊ธฐ์
ํด์ฃผ์ธ์.'
# ์ ์ถํ URL
real_list = []
page_idx = 1
def submit_url_to_bing_webmaster(url, api_key):
endpoint = "https://ssl.bing.com/webmaster/api.svc/json/SubmitUrlbatch?apikey=" + api_key
headers = {
"Host": "ssl.bing.com",
"Content-Type": "application/json; charset=utf-8",
}
payload = {
"siteUrl":"https://odaily.tistory.com",
"urlList": url
}
response = requests.post(endpoint,json=payload)
print(response.status_code)
print("์ด์ ", response.text)
if response.status_code == 200:
return "URL์ด ์ฑ๊ณต์ ์ผ๋ก ์ ์ถ๋์์ต๋๋ค."
else:
return "URL ์ ์ถ์ ์คํจํ์์ต๋๋ค."
def get_tistory_post_list(idx, blog_name, access_token):
api_url = f'https://www.tistory.com/apis/post/list?output=json&blogName={blog_name}&access_token={access_token}&page={idx}'
response = requests.get(api_url)
if response.status_code == 200:
post_list_data = response.json()
return post_list_data['tistory']['item']
else:
return None
while True :
post_list = get_tistory_post_list(page_idx, blog_name, access_token)
write_list = post_list['posts']
allPage = int( int(post_list['totalCount']) / 10 + 1)
if page_idx == allPage :
break
if post_list:
for write in write_list:
# ์ ๋ชฉ๊ณผ URL ๋ณด๊ณ ์ถ์ ๋ ์ถ๋ ฅํ๊ธฐ
# print(f"์ ๋ชฉ: {write['title']}")
# print(f"URL: {write['postUrl']} \n")
real_list.append(write['postUrl'])
else:
print("๊ธ ๋ชฉ๋ก์ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.")
print(page_idx, " ๋ฒ์งธ\n")
page_idx = page_idx + 1
print("๋ฆฌ์คํธ : ", real_list ,"\n")
print("์" , len(real_list) ,"\n")
result = submit_url_to_bing_webmaster(real_list, api_key)
print(result)
๋ง์ง๋ง์ ๋ฆฌ์คํธ๋ฅผ ์ถ๋ ฅํ๋ฉด ํ์ด์ฌ ์ฝ๋ ์ฌ์ฉํ ์ฝ์์ฐฝ์ ์๋์ ๊ฐ์ด ์ถ๋ ฅ๋ฉ๋๋ค. ์ ๊ฐ์ ๊ฒฝ์ฐ๋ submit_url_to_bing_webmaster๋ฅผ ์ฌ์ฉํ์ง ์๊ณ text ํ์ผ๋ก ์ถ๋ ฅํ์ฌ์ ๋ฆฌ์คํธ ๊ด๋ฆฌ๋ฅผ ๋ณ๋๋ก ํ์ฌ ์น๋ง์คํฐ์ ๋ฑ๋กํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์๊ฐํ์์ต๋๋ค.
๊ฐ์ ธ์จ ๋ฆฌ์คํธ ๋ชฉ๋ก์ ํ์ผ๋ก ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ํน์๋ ํ์ํ์ ๋ถ ์์ผ์๋ฉด ์ ์์ค์์ ๋ง์ง๋ง 2์ค์ ์ฃผ์ ์ฒ๋ฆฌ ํ์ฌ ์๋ ์์ค๋ฅผ ํ์ฉํ์๋ฉด ๋ฉ๋๋ค. ์๋ ์์ค๋ ํฐ์คํ ๋ฆฌ์์ ๊ธ ๋ชฉ๋ก์ ์ ์ฒด ์กฐํ ํ ๋ฆฌ์คํธ๋ฅผ ํ์ผ๋ก ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
text_data = "\n".join(real_list)
# ๊ฒฐ๊ณผ๋ฅผ ํ์ผ๋ก ์ ์ฅ
with open('result.txt', 'w', encoding='utf-8') as file:
file.write(text_data)
print("๊ฒฐ๊ณผ๊ฐ result.txt ํ์ผ๋ก ์ ์ฅ๋์์ต๋๋ค.")
์ด๋ฏธ ๋ฆ์์ง๋ง, ๋ด์ผ๋ถํฐ๋ ๊พธ์คํ 100๊ฐ์ฉ ๋ฑ๋กํด์ 17์ผ ๋ง์ bing์๋ ์ ์ฝํ ์ธ ๋ฅผ ๋ค ๋ฑ๋กํ์ฌ ์ ์ ๋ ์ ์๋๋ก ํด์ผ๊ฒ ์ต๋๋ค. 9์๋ณด๋ค. 10์์ ๋ ธ์ถ์๊ฐ ์ฆ๊ฐํ๋ค ๋ณด๋ 11์์๋ ๊ฒ์์์ง์์ ๋ ธ์ถ๋๋ ์์๊ฐ ์ ์ ์ฌ๋ผ๊ฐ๊ณ ์ ๋์ผ์ค ๋ฐ ์ ๋ํฝ ์์ต์ด ๋๋ ํจ๊ณผ๊ฐ ์๋ ๊ฒ ๊ฐ์ ์์์ด ์๊น๋๋ค. ๊ทธ๋ ๊ฒ ๋ง์ ์์ต์ ์๋์ง๋ง ํฐ๋ ๋ชจ์ ํ์ฐ์ด ๋๋ ์์ต์ ๋ง๋ค์ด ๋ณด๋๋ก ๋ ธ๋ ฅํด ๋ณด๊ฒ ์ต๋๋ค. ๋ค๋ค ์ฆ๊ฑฐ์ด ํฌ์คํ ํ์ธ์.
๋๊ธ