크롤링 네이버 블로그에 글쓰기

import time
from pathlib import Path
import pygetwindow as pgw
import pyperclip
import selenium
from selenium import webdriver
from selenium.webdriver.common.by import By
bylist=[By.ID,By.NAME,By.CLASS_NAME,By.CSS_SELECTOR,By.TAG_NAME,By.LINK_TEXT,By.PARTIAL_LINK_TEXT,By.XPATH]
def find_element(bs,value,by=0,s=0):
    bystr=""
    for b in range(0,len(bylist)):
        if b==by:
            bystr=bylist[b]
    if s==0:
        return bs.find_element(bystr, value)
    else:
        return bs.find_elements(bystr, value)
def find_el(bs,value,by=3,s=0):
    return find_element(bs,value,by,s)
def input_text(bs, id, user_input,by=3):
    pyperclip.copy(user_input)
    find_el(bs,id,by).click()
    Keys = selenium.webdriver.Keys
    selenium.webdriver.ActionChains(bs).key_down(Keys.CONTROL).send_keys('v').key_up(Keys.CONTROL).perform()
f = open('naver_blog.txt', "r")
ref = f.readlines()
browser = webdriver.Chrome()
browser.get("https://nid.naver.com/nidlogin.login")
input_text(browser,"input#id",f"{ref[0]}",3)
input_text(browser,"input#pw",f"{ref[1]}",3)
submit=find_el(browser,"button[type='submit']",3)
submit.click()
time.sleep(3)
find_el(browser,'a.MyView-module__item_link___Dzbpq',3,1)[2].click() # 네이버 블로그 클릭
time.sleep(1)
find_el(browser,'a.MyView-module__link_service___Ok8hP',3,1)[1].click() # 내 네이버 블로그 클릭
browser.switch_to.window(browser.window_handles[-1]) # 브라우저 스위치 새창 전환
time.sleep(15)
browser.switch_to.frame("mainFrame") # 브라우저 스위치 블로그 메인 프레임
try:
    find_el(browser,'button.btn_close._btn_close',3).click() # 모달 창이 떠있을 경우 닫기
except:
    pass
time.sleep(2)
cate_list=find_el(browser,'div.cm-body a',3,1) # 카테고리 리스트
for i in range(1,len(cate_list)):
    if cate_list[i].text=="": #카테고리 텍스트가 비어있으면
        continue #건너뛰기
    print(cate_list[i].text+' '+cate_list[i].get_attribute('id').replace('category','')) # 카테고리 츨력
amenu=input('카테고리 메뉴 번호를 선택해 주세요') # 사용자로부터 메뉴번호를 입력
cate_menu=find_el(browser,f'a#category{amenu}').get_attribute('href') # 카테고리 메뉴 하이퍼링크텍스트 주소
browser.get(cate_menu) # 브라우저로 가져오기
time.sleep(2)
post_link=find_el(browser,'a.col._checkBlock._rosRestrict').get_attribute('href') # 글쓰기 링크
browser.get(post_link) # 브라우저로 가져오기
time.sleep(8)
browser.switch_to.window(browser.window_handles[-1])
try:
    find_el(browser,'button.se-popup-button.se-popup-button-cancel').click()# 이전에 쓴글이 있는 경우 취소 버튼
except:
    pass
time.sleep(2)
input_text(browser,'span.se-placeholder.__se_placeholder.se-ff-nanumgothic.se-fs32',f'{ref[2]}') # 제목에 글 붙여넣기
time.sleep(2)
input_text(browser,'span.se-placeholder.__se_placeholder.se-ff-nanumgothic.se-fs15',f'{ref[3]}') # 내용에 글 붙여넣기
time.sleep(2)
dir_path=Path.cwd() # 현재 있는 디렉토리 경로
file_path=f"{dir_path}"+'\\'+"img_empty.jpg"
find_el(browser,'button.se-image-toolbar-button.se-document-toolbar-basic-button.se-text-icon-toolbar-button.__se-sentry',3).click() # 사진 업로드 버튼 클릳
file_input=find_el(browser,'input#hidden-file',3) #파일 업로드
file_input.send_keys(file_path) #파일 입력
time.sleep(5)
window = pgw.getWindowsWithTitle('열기')[0] # 윈도우창 제목이 '열기'로 되어 있는창 가져오기
window.close() # 윈도우 창 닫기
find_el(browser,'button.se-help-panel-close-button',3).click() # 도움말 창 닫기
time.sleep(2)
find_el(browser,'button.publish_btn__Y5mLP',3).click() # 발행 버튼 클릭
time.sleep(2)
find_el(browser,'button.confirm_btn__Dv9du',3).click() # 레이어 쪽에 발행 버튼 클릭
browser.quit()
3
3개의 답글

👉 이 게시글도 읽어보세요