아래 코드의 기능은 네이버 블로그를 대상으로 검색어를 입력하여 해당 키워드로 블로그 글을 발행할 때, 네이버 블로그 전체 경쟁률을 분석하는 기능을 한다. 가장 간단한 코드를 작성할 때조차 꼭 디자인을 하고 설계를 하고 해결 계략을 짠다. 세상은 모두 계략에 의해 움직인다.
모든 일엔 계획이 필요하듯, 코드를 짤 때는 간략하게나마 설계 노트를 작성한다.
- 원하는 키워드를 선정한다.
- 네이버 API 아이디/비번을 발급받는다. 네이버 개발자 도구를 이용한다.
- 네이버 검색 API를 해당 키워드의 최근 100개의 발행 개수를 확인한다.
- 해당 키워드의 포스팅일자와 총발행량을 체크한다.
- 오늘 해당 키워드로 글을 올렸을 경우 경쟁률을 알아본다.
코드를 배울 때 가장 좋은 방법은 타이핑하는 것이다. 손가락에 굳은살이 생길 때까지 손톱을 짧게 깎고 타이핑하고 복사 후 붙여 넣기하고 돌아가는 모습을 확인한다. 한 코드에서 무엇인가 배우지 못했다면 반복한다. 이미 입력하여 실행했다고 해도 똑같은 과정을 하고 또 하고 계속 반복한다.

아래는 소스코드인데 네이버에서 발급받은 Application ID와 password를 적당히 입력하여 실행한다.
# 네이버 검색 API를 해당키워드의 최근 100개의 발행개수를 확인한다.
import json
import os
import sys
import urllib.request
import getpass
# client_id = "YOUR_CLIENT_ID"
# client_secret = "YOUR_CLIENT_SECRET"
keyword = str(input("keyword: "))
client_id = "받아야 한다"
client_secret = getpass.getpass("Client Secret: ")
encText = urllib.parse.quote(keyword)
# url = "https://openapi.naver.com/v1/search/blog?query=" + encText # json 결과
display = 100
sort = 'date'
url = "https://openapi.naver.com/v1/search/blog?query=" + encText + "&display=" + str(display) + "&sort=" + str(sort)
# url = "https://openapi.naver.com/v1/search/blog.xml?query=" + encText # xml 결과
request = urllib.request.Request(url)
request.add_header("X-Naver-Client-Id",client_id)
request.add_header("X-Naver-Client-Secret",client_secret)
response = urllib.request.urlopen(request)
rescode = response.getcode()
if(rescode==200):
response_body = response.read()
#나오는 결과를 json 으로 변환해서 가져오는작업
response_dict = json.loads(response_body.decode('utf-8'))
print(response_body.decode('utf-8'))
else:
print("Error Code:" + rescode)
# 해당 키워드의 포스팅일자와 총 발행량을 체크한다.
response_dict.keys()
# 총 발행량 확인
posting_total = 100
print(posting_total)
# 마지막 포스팅 생성날짜 확인
last_posting = response_dict["items"][-1]
print(last_posting["postdate"])
# 오늘 날짜 확인
import datetime
today = datetime.datetime.today()
print(today)
# 마지막 포스팅 생성날짜 datetime 변환
last_year = int(last_posting["postdate"][:4])
print(last_year)
last_month = int(last_posting["postdate"][4:6])
print(last_month)
last_day = int(last_posting["postdate"][6:])
print(last_day)
last = datetime.datetime(last_year,last_month,last_day)
#마지막 포스팅일자 - 오늘 날짜 계산
date_difference = today - last
date_difference.days
type(last)
print(posting_total/date_difference.days)
#i am here. 20230208
아래는 실행 결과 화면인데 가장 아래 부분의 경쟁률 7.69 숫자가 의미하는 것은 경쟁 포스팅 수다. 즉 내가 포스팅을 올리면 7.69 명의 같은 키워드로 글을 올리는 경쟁이 된다는 의미다. 출력 내용이 긴데 맨 마지막 부분 숫자만 참고하면 된다.
keyword: 파이선
Client Secret:
{
"lastBuildDate":"Wed, 08 Feb 2023 19:07:11 +0900",
"total":12052,
"start":1,
"display":100,
"items":[
{
"title":"AI 시장의 게임체인저, 챗GPT 강의를 소개합니다.... ",
"link":"https:\/\/blog.naver.com\/udemy-wjtb\/223009260723",
"description":"AI 활용을 위해 <b>파이선<\/b> 등 복잡한 컴퓨터 언어 교육 과정을 거치지 않고도 간단히 대화형 챗봇을 활용하는 것만으로 자신의 업무 분야에 맞게 업무 생산성을 높일 수 있는 것도 장점으로 꼽혔다.... ",
"bloggername":"스타터스 취업 부트캠프 (STARTERS)",
"bloggerlink":"blog.naver.com\/udemy-wjtb",
"postdate":"20230208"
},
{
"title":"[Python] 더모아 Skylife 납부 자동화",
~
~
~
~
"bloggerlink":"blog.naver.com\/munzh",
"postdate":"20230127"
},
{
"title":"파이썬기초 리스트와 데이터 관리에 대해 알아봐요",
"link":"https:\/\/blog.naver.com\/gold5doo\/222995483671",
"description":"안녕하세요. 합격의기운이예요 파이썬기초 리스트와 데이터 관리에 대해 알아봐요 Part 1: 파이썬에서 데이터를 처리하는 방법 데이터의 개수가 많아지게 되면 데이터를 효율적으로 관리하기 어려워지게... ",
"bloggername":"합격의기운",
"bloggerlink":"blog.naver.com\/gold5doo",
"postdate":"20230126"
}
]
}
100
20230126
2023-02-08 19:07:10.774948
2023
1
26
7.6923076923076925
'개발자 > 파이썬 Python' 카테고리의 다른 글
| 파이썬에서 가장 많이 사용하는 상위 40개 라이브러리 (1) | 2023.06.26 |
|---|---|
| Python에서 SIGINT(CTRL-C)와 같은 OS 신호 캡처 및 처리 (0) | 2023.04.26 |
| Complete Python Roadmap for beginners in 2023 (0) | 2023.02.21 |
| 파이썬 파일 폴더 조작 총정리 Python - File, directory manipulation (0) | 2023.02.18 |
| OpenCV 4로 배우는 컴퓨터 비전과 머신 러닝 (0) | 2023.02.10 |
| Python YouTube 동영상 다운로드 방법 (0) | 2023.02.06 |
| 파이썬 PDF 라이브러리 pdf 파일 분할, 병합, 자르기 및 변형 (0) | 2023.01.19 |
| 중요한 Pandas 패키지 매쏘드 (0) | 2023.01.12 |
취업, 창업의 막막함, 외주 관리, 제품 부재!
당신의 고민은 무엇입니까? 현실과 동떨어진 교육, 실패만 반복하는 외주 계약,
아이디어는 있지만 구현할 기술이 없는 막막함.
우리는 알고 있습니다. 문제의 원인은 '명확한 학습, 실전 경험과 신뢰할 수 있는 기술력의 부재'에서 시작됩니다.
이제 고민을 멈추고, 캐어랩을 만나세요!
코딩(펌웨어), 전자부품과 디지털 회로설계, PCB 설계 제작, 고객(시장/수출) 발굴과 마케팅 전략으로 당신을 지원합니다.
제품 설계의 고수는 성공이 만든 게 아니라 실패가 만듭니다. 아이디어를 양산 가능한 제품으로!
귀사의 제품을 만드세요. 교육과 개발 실적으로 신뢰할 수 있는 파트너를 확보하세요.
지난 30년 여정, 캐어랩이 얻은 모든 것을 함께 나누고 싶습니다.
귀사가 성공하기까지의 긴 고난의 시간을 캐어랩과 함께 하세요.
캐어랩