구현 내용
- 1. 셀레니움 라이브러리의 웹드라이버 크롬 실행
- 2. 네이버 자동 로그인
- 3. 네이버 블로그로 이동 (3~5번 무한 반복)
- 4. 최근 포스팅 클릭
- 5. 좋아요 클릭
actionchains
- 매크로 프로그램을 만들때 사용하는 pyautogui를 웹에서 작동할 수 있도록 물리적 기능을 지원하는 라이브러리
- 특정사이트가 자동화나 크롤링을 사전에 막아서 element의 click이 작동하지 않는다면 actionchains를 이용하여 물리적으로 실행
- elements로 마우스 이동: ActionChains(driver).move_to_element(요소 변수)
주의 사항
실제 작동시에는 스팸 처리를 당하지 않기 위해 random 함수를 사용합니다.
구현 코드
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
import time
import pyperclip
chrome_options = Options() #브라우저 꺼짐 방지
chrome_options.add_experimental_option("detach", True)
chrome_options.add_experimental_option("excludeSwitches", ["enable-logging"]) #불필요한 에러 메세지 삭제
def login(driver) :
id_form = driver.find_element(By.CSS_SELECTOR, '#id')
pw_form = driver.find_element(By.CSS_SELECTOR, '#pw')
id_form.click()
pyperclip.copy('아이디')
id_form.send_keys(Keys.COMMAND, 'v')
time.sleep(1)
pw_form.click()
pyperclip.copy('비번')
pw_form.send_keys(Keys.COMMAND, 'v')
time.sleep(1)
login_btn = driver.find_element(By.CSS_SELECTOR, '.btn_login')
login_btn.click()
def work(driver):
while True:
driver.get('https://m.blog.naver.com/Recommendation.nhn')
time.sleep(5)
post = driver.find_elements(By.CSS_SELECTOR, '.postlist__LXY3R')[0]
post.click()
time.sleep(3)
like_path = driver.find_element(By.XPATH, '//*[@id="body"]/div[10]/div/div[1]/div/div') #좋아요 태그 찾기
like_btn = like_path.find_element(By.XPATH, '//*[@id="body"]/div[10]/div/div[1]/div/div/a') #좋아요 선택
# like_btn.click() #이 코드는 작동하지 않음(네이버 블로그가 막아놓음) => actionchains 함수로 해결
actions = ActionChains(driver)
time.sleep(5)
actions.move_to_element(like_btn).click().perform()
time.sleep(5)
def main() :
service = Service(executable_path = ChromeDriverManager().install()) #크롬 드라이버 최신 버전 자동 설치 후 서비스 만들기
driver = webdriver.Chrome(service = service, options = chrome_options)
driver.implicitly_wait(5)
driver.get("https://nid.naver.com/nidlogin.login?mode=form&url=https%3A%2F%2Fwww.naver.com")
time.sleep(3)
login(driver)
time.sleep(3)
work(driver)
main()
반응형
'개발 > Python' 카테고리의 다른 글
[py] 파일 읽기 쓰기 (62) | 2022.12.04 |
---|---|
[py] 파일 입출력 자동화 (0) | 2022.10.29 |
[py] 사이트 로그인 방법 (ft. 보안 처리 유무) (0) | 2022.10.26 |
[py] 인스타그램 좋아요 자동화 (0) | 2022.10.24 |
[py] 네이버 블로그 이웃 추가 자동화 (1) | 2022.10.11 |
댓글