01-26 21:11
벤치마킹
Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 사진문자추출하기
- 파이썬
- 사진에서 글자추출
- 검색완료
- 주차넉넉
- DFS
- 편도수술
- 커피
- 결항
- 양양솔비치 뷔페
- 푸르지오포레피스
- 싱가폴중학교수학문제
- 오트눈썰매장
- 결항전문
- 중학교입학수학문제
- 가족소고기외식
- 사진문자추출
- 양양솔비치세프스키친
- 양양솔비치조식
- 커피쏟음
- 홍시스무디
- 영통외식
- 고마워다음
- 에어아시아
- 영통칠프로칠백식당
- 당근마켓중고차
- 종이캐리어
- 영통역소고기
- 아이혼자다녀옴
- 양양솔비치아침
Archives
- Today
- Total
너와나의 관심사
파이썬으로 네이버 로그인 + 카페 글쓰기 code 본문
니즈: 네이버 카페에 같은 내용을 포스팅을 하고 싶은데 노가다가 싫다
아래 그림 처럼.. 이 블로그에 글을 붙여야하는데 복붙이 싫어서 ..다시 시작했다.
요구 사항: 네이버 자동 로그인 이후에 특정 카페에 제목 + 내용을 원하는것
복잡해서 그냥 코드로 대체 하고 callback url 은 간단한.. localhost jsp 로 등록 한다
# Token 정보 가져와서 caffe 글쓰기.. code
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import json
import os
import re
import urllib.request
import time
import random
import datetime
from bs4 import BeautifulSoup
from requests import get
from selenium import webdriver
from urllib.error import HTTPError
from urllib.parse import urlencode
DRIVER_DIR = 'F:\work\chromedriver.exe'
def get_naver_token():
chromedriver_path = os.environ.get('CHROMEDRIVER_PATH')
chromedriver_path = DRIVER_DIR
print(chromedriver_path )
naver_cid = "zzzzzzzzzzzzzzzzzzzzzzzzz"
naver_csec = "xxxxx"
naver_redirect = "http://localhost:8080/callback.jsp"
driver = webdriver.Chrome(DRIVER_DIR)
driver.get('https://nid.naver.com/nidlogin.login')
id = 'IDIDID' #ID 직접 입력
pw = 'PWPPWPWPWPW' #비번은 직접 입력
driver.execute_script("document.getElementsByName('id')[0].value=\'" + id + "\'")
# time.sleep(1)
driver.execute_script("document.getElementsByName('pw')[0].value=\'" + pw + "\'")
# time.sleep(1)
driver.find_element_by_xpath('//*[@id="frmNIDLogin"]/fieldset/input').click()
time.sleep(1)
driver.find_element_by_xpath('//*[@id="frmNIDLogin"]/fieldset/span[1]/a').click()
time.sleep(1)
driver.find_element_by_xpath('//*[@id="login_maintain"]/span[1]').click()
time.sleep(1)
state = "REWERWERTATE"
req_url = 'https://nid.naver.com/oauth2.0/authorize?response_type=code&client_id=%s&redirect_uri=%s&state=%s' % (naver_cid, naver_redirect, state)
driver.get(req_url)
time.sleep(1)
########################## # XXX: 최초 1회만 반드시 필요하고 이후엔 불필요함
'''
driver.find_element_by_xpath('//*[@id="profile_optional_list"]/span/label').click()
time.sleep(1)
driver.find_element_by_xpath('//*[@id="content"]/div[4]/div[2]/button/span').click()
##########################
'''
redirect_url = driver.current_url
temp = re.split('code=', redirect_url)
code = re.split('&state=', temp[1])[0]
driver.quit()
print(redirect_url)
url = "https://nid.naver.com/oauth2.0/token?"
print(url)
data = "grant_type=authorization_code" + "&client_id=" + naver_cid + "&client_secret=" + naver_csec + "&redirect_uri=" + naver_redirect + "'&code=" + code + "&state=" + state
print(data)
request = urllib.request.Request(url, data=data.encode("utf-8"))
request.add_header('X-Naver-Client-Id', naver_cid)
request.add_header('X-Naver-Client-Secret', naver_redirect)
response = urllib.request.urlopen(request)
rescode = response.getcode()
token = ''
if rescode == 200:
response_body = response.read()
js = json.loads(response_body.decode('utf 8'))
token = js['access_token']
else:
print("Error Code:", rescode)
return None
if len(token) == 0:
return None
print(token)
return token
def naver_cafe_post(subject, content):
token = get_naver_token()
time.sleep(1)
header = "Bearer " + token # Bearer 다음에 공백 추가
clubid = '29415004'
menuid = '59'
url = "https://openapi.naver.com/v1/cafe/" + clubid + "/menu/" + menuid + "/articles"
subject = urllib.parse.quote(subject)
content = urllib.parse.quote(content)
data = urlencode({'subject': subject, 'content': content}).encode()
request = urllib.request.Request(url, data=data)
request.add_header("Authorization", header)
try:
response = urllib.request.urlopen(request)
except HTTPError as e:
print("url open failed", e, subject, content)
return
rescode = response.getcode()
if rescode == 200:
response_body = response.read()
print(response_body.decode('utf-8'))
else:
print("Error Code:" + rescode)if __name__ == "__main__":
subject = "글제목"
contents = "카페 글내용"
token = get_naver_token()
for id in CID:
naver_cafe_post(token , subject, contents, id)
print("done")
Comments