웹 자동화 프로그램 만들기 4 - 자동 댓글 달기, [ 반복 실행 ( 페이지 새로고침 )( 반복시행 사이에 텀 주기 ) ]

하이루·2022년 7월 10일
0

자동 댓글 달기 예제

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome("./chromedriver")

driver.get("https://www.google.co.kr/")

driver.find_element(By.CSS_SELECTOR,"#gb > div > div:nth-child(1) > div > div:nth-child(2) > a").click()

# 댓글 입력 하는 코드
driver.find_element(By.ID,"comment").send_keys("댓글 입력 예제입니다.")
driver.find_element(By.CLASS_NAME,"name").send_keys("이름 부분입니다.")

driver.find_element(By.NAME,"btn_register").click()

자동 댓글 달기를 반복할 경우 발생하는 문제 해결

실패 예제

# 댓글 입력 하는 코드
driver.find_element(By.ID,"comment").send_keys("댓글 입력 예제입니다.")
driver.find_element(By.CLASS_NAME,"name").send_keys("이름 부분입니다.")

driver.find_element(By.NAME,"btn_register").click()

# 댓글 입력 하는 코드
driver.find_element(By.ID,"comment").send_keys("댓글 입력 예제입니다.")
driver.find_element(By.CLASS_NAME,"name").send_keys("이름 부분입니다.")

driver.find_element(By.NAME,"btn_register").click()
  • 이렇게 할 경우ㅡ,
    1번 시행의 버튼 클릭에 의해 페이지가 리로딩되는 도중에
    2번 시행의 입력이 진행되어버리기 때문에
    정상적으로 진행되지 않는다.

따라서 두 시행 사이에 페이지 새로고침을 넣어주는 것이 좋다.

성공 예제

# 댓글 입력 하는 코드
driver.find_element(By.ID,"comment").send_keys("댓글 입력 예제입니다.")
driver.find_element(By.CLASS_NAME,"name").send_keys("이름 부분입니다.")

driver.find_element(By.NAME,"btn_register").click()

# 페이지 새로고침
driver.refresh()

# 댓글 입력 하는 코드
driver.find_element(By.ID,"comment").send_keys("댓글 입력 예제입니다.")
driver.find_element(By.CLASS_NAME,"name").send_keys("이름 부분입니다.")

driver.find_element(By.NAME,"btn_register").click()

반복 시행 사이에 쉬는 구간 넣기 ( 봇인 것 숨기기 )

위와 같은 방법으로만 하면
사람이 하기엔 너무 빠른 속도로 서버에 request가 들어가기 때문에
봇으로 의심받기 너무 쉽다.

따라서 각 시행 사이에 텀을 넣어서 속여줘야 한다.

# 댓글 입력 하는 코드
driver.find_element(By.ID,"comment").send_keys("댓글 입력 예제입니다.")
driver.find_element(By.CLASS_NAME,"name").send_keys("이름 부분입니다.")

driver.find_element(By.NAME,"btn_register").click()

# 페이지 새로고침
driver.refresh()

# 3초 정도 쉬기
time.sleep(3)

# 댓글 입력 하는 코드
driver.find_element(By.ID,"comment").send_keys("댓글 입력 예제입니다.")
driver.find_element(By.CLASS_NAME,"name").send_keys("이름 부분입니다.")

driver.find_element(By.NAME,"btn_register").click()

반복문 포함하여 코드 설계

위에서는 이해를 위해 일일이 썼지만,
기본적으로 반복문을 사용하여 코딩하면 된다.

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome("./chromedriver")

driver.get("https://www.google.co.kr/")

driver.find_element(By.CSS_SELECTOR,"#gb > div > div:nth-child(1) > div > div:nth-child(2) > a").click()

# 반복문 5번 반복
count = 0

while count < 5 :

	# 댓글 입력 하는 코드
	driver.find_element(By.ID,"comment").send_keys("댓글 입력 예제입니다.")
	driver.find_element(By.CLASS_NAME,"name").send_keys("이름 부분입니다.")

	driver.find_element(By.NAME,"btn_register").click()

	# 페이지 새로고침
	driver.refresh()

	# 3초 정도 쉬기
	time.sleep(3)

	count = count + 1

driver.close()
profile
ㅎㅎ

0개의 댓글