반응형
아래 코드의 기능은 네이버 블로그를 대상으로 검색어를 입력하여 해당 키워드로 블로그 글을 발행할 때, 네이버 블로그 전체 경쟁률을 분석하는 기능을 한다. 가장 간단한 코드를 작성할 때조차 꼭 디자인을 하고 설계를 하고 해결 계략을 짠다. 세상은 모두 계략에 의해 움직인다.
모든 일엔 계획이 필요하듯, 코드를 짤 때는 간략하게나마 설계 노트를 작성한다.
- 원하는 키워드를 선정한다.
- 네이버 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 |
더욱 좋은 정보를 제공하겠습니다.~ ^^