2023 주니어 SRE 엔지니어 후레임

반응형

※ 파이썬과 파이썬 에디터가 설치되어 있다는 가정하에 설명합니다.
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By

import re
import time
import pyperclip

driver = webdriver.Chrome('C:/chromedriver.exe')
driver.implicitly_wait(3)

login=1

id='' # 자신의 디씨 ID 입력
pw='' # 자신의 디씨 PW 입력

if login==1 :

    # 로그인
    driver.get('https://gall.dcinside.com/')
    time.sleep(1)

    driver.find_element_by_xpath("//a[contains(text(),'로그인')]").click()
    time.sleep(1)

    pyperclip.copy(f'{id}') # ID
    driver.find_element_by_id('id').send_keys(Keys.CONTROL, 'v')
    time.sleep(1)

    pyperclip.copy(f'{pw}') # PW
    driver.find_element_by_id('pw').send_keys(Keys.CONTROL, 'v')
    driver.find_element_by_xpath("//button[@class='btn_blue small btn_wfull']").click()
    time.sleep(1)

    # 내 게시글 이동
    driver.get(f'https://gallog.dcinside.com/{id}/posting')
    
    # 내 댓글 이동
    #driver.get(f'https://gallog.dcinside.com/{id}/comment')

    html = driver.page_source
    bs = BeautifulSoup(html, 'lxml')

	# 게시글or댓글 개수 알아내기
    result = str(bs.find('span', class_='num'))
    result=re.sub('<.+?>', '', result, 0, re.I|re.S) # 태그 제거
    result=result.lstrip("(")
    result=result.rstrip(")")
    cnt_posting = int(result)
    
    # 개수에 맞춰 삭제
    for i in range(cnt_posting):
    	try:
        	driver.find_element_by_xpath("//button[@class='btn_delete btn_svc btn_lightgrey smaller']").click()
        	time.sleep(4) # (삭제)를 누른 후의 딜레이[초]
        	driver.switch_to.alert.accept()
        	time.sleep(4) # (확인)을 누른 후의 딜레이[초]
		except Exception as err:
        	print(err)
            pass # no such alert 에러가 발생해도 삭제를 계속합니다

본 소스를 사용함으로 인해서 발생될 수 있는 불이익에 대한 책임은 사용자에게 있습니다.

 

 

 

 

 

 

 

 

발생할 수 있는 에러

에러1.

ModuleNotFoundError : No module named 'selenium'

원인

셀레니움(selenium)이 설치되지 않은 경우

 

해결책 

pip install selenium

으로 셀레니움을 설치해줍니다.

 

 

 

에러2. 

 

selenium.common.exceptions.WebDriverException: Message: 'chromedriver.exe' executable needs to be in PATH.

원인

크롬 드라이버(Chrome driver)가 설치되지 않은 경우

 

해결책

크롬에서 도움말 > Chrome 정보에 들어가 자신의 크롬 버전 확인 후

버전에 맞는 ChromeDriver 설치.

 

 

 

개선할 점

속도

- 캡챠(reCaptcha)가 뜨는 걸 해결할 방법이 없어 현재로서는 8초정도의 딜레이가 불가피합니다.

- time.sleep(0.5)로 주면 딜레이 없이 삭제 가능하나 캡챠가 10분 간격으로 뜨는걸 경험하실겁니다.

 

no such alert

selenium.common.exceptions.NoAlertPresentException: Message: no such alert

- 가끔 alert창을 인식하지 못하고 프로그램이 종료되는데, 이 경우 다시 실행될 수 있도록 수정하겠습니다.

 

 

위에 언급된 외의 증상은 댓글을 남겨주시면 해결책을 찾아볼 수 있도록 하겠습니다.

 

 

반응형

이 글을 공유합시다

facebook twitter googleplus kakaoTalk kakaostory naver band