※ 파이썬과 파이썬 에디터가 설치되어 있다는 가정하에 설명합니다.
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.
원인
셀레니움(selenium)이 설치되지 않은 경우
해결책
pip install selenium
으로 셀레니움을 설치해줍니다.
에러2.
원인
크롬 드라이버(Chrome driver)가 설치되지 않은 경우
해결책
크롬에서 도움말 > Chrome 정보에 들어가 자신의 크롬 버전 확인 후
버전에 맞는 ChromeDriver 설치.
속도
- 캡챠(reCaptcha)가 뜨는 걸 해결할 방법이 없어 현재로서는 8초정도의 딜레이가 불가피합니다.
- time.sleep(0.5)로 주면 딜레이 없이 삭제 가능하나 캡챠가 10분 간격으로 뜨는걸 경험하실겁니다.
no such alert
- 가끔 alert창을 인식하지 못하고 프로그램이 종료되는데, 이 경우 다시 실행될 수 있도록 수정하겠습니다.
위에 언급된 외의 증상은 댓글을 남겨주시면 해결책을 찾아볼 수 있도록 하겠습니다.
Puppeteer의 networkidle0과 networkidle2 차이점 (0) | 2023.01.17 |
---|---|
퍼펫티어(Puppeteer)와 셀레니움(Selenium)의 장단점 (0) | 2023.01.07 |
웹 크롤링과 웹 스크래핑의 차이 (0) | 2023.01.03 |
[Python] 셀레니움(Selenium)으로 네이버 카페(중고나라) 크롤링하기 (1) | 2020.09.16 |
[Python] 파이썬(Python)과 셀레니움(Selenium)을 이용한 크롤링 (0) | 2020.08.30 |