Selenium으로 네이버 카페 자동 출석하기
Selenium으로 네이버 카페 자동 출석하기
Python 모듈인 Selenium을 통해 네이버 카페 자동 출석 스크립트를 작성해 보았다.
Selenium은 bs4와 같은 python 모듈이다.
네이버 카페 출석수를 올리기 위해 파이썬 beautifulsoup4를 통해서 시도해보았으나 안되어서 다른 방법을 찾던 도중... Selenium을 통한 방법이 있는 것을 알게 되어 시도해 보게 되었다.
1. 설치 환경
- CentOS 7
2. Python 설치
- CentOS 7에는 기본적으로 설치 되어 있다,
- 2.7 버전으로 진행 했다.
3. 설치 진행 (pip, wget, bzip2 설치부터 Selenium, PhantomJS 까지)
- PhantomJS의 경우엔 http://phantomjs.org/download.html 에 들어가서 최신 버전을 확인하자.
- fontconfig의 경우엔 PhantomJS에 필요한 라이브러리 인데 기본 설치가 안되어 있어 설치를 해주어야 PhantomJS가 정상 작동한다.
sudo yum install -y python-pip wget bzip2 fontconfig
sudo pip install selenium bs4
wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2
bzip2 -d phantomjs-2.1.1-linux-x86_64.tar.bz2
tar xvf phantomjs-2.1.1-linux-x86_64.tar
4. 스크립트 작성
- 잘되는지 확인하려고 로깅 모듈을 추가해 출석 수를 불러와 기록해 놓도록 해 놓았다.
- 아래 하이라이트된 부분만 알맞게 수정하면 된다.
#!/usr/bin/python
#-*- coding: utf-8 -*-
from selenium import webdriver
from bs4 import BeautifulSoup
import time
import logging
import logging.handlers
#logging
logger = logging.getLogger("crumbs")
logger.setLevel(logging.INFO)
formatter = logging.Formatter('[%(levelname)s|%(filename)s:%(lineno)s] %(asctime)s > %(message)s')
fileHandler = logging.FileHandler('./naver.log')
fileHandler.setFormatter(formatter)
logger.addHandler(fileHandler)
while True:
try:
driver = webdriver.PhantomJS('./phantomjs-2.1.1-linux-x86_64/bin/phantomjs')
driver.set_window_size(1920,1080)
driver.implicitly_wait(3)
logger.debug('initiate')
driver.get('https://nid.naver.com/nidlogin.login')
driver.find_element_by_name('id').send_keys('ID')
driver.find_element_by_name('pw').send_keys('PW')
driver.find_element_by_xpath('//*[@id="frmNIDLogin"]/fieldset/input').click()
logger.debug('login')
#네이버 로그인 알림 설정해 놓으면 뜨는 창에서 No 선택
elem = driver.find_elements_by_xpath('//*[@id="frmNIDLogin"]/fieldset/span[2]/a')
if len(elem) > 0:
elem[0].click()
logger.debug('No')
time.sleep(1)
driver.get('http://cafe.naver.com/CAFE_URL')
logger.debug('cafe')
driver.find_element_by_xpath('//*[@id="cafe-info-data"]/ul/li[2]/p/a').click()
logger.debug('cnt check')
time.sleep(1)
html = driver.page_source
soup = BeautifulSoup(html, 'html.parser')
logger.info(soup.select_one('#ia-action-data > div.ia-info-data3 > ul > li.info > em').get_text().strip())
driver.get('https://nid.naver.com/nidlogin.logout')
time.sleep(1)
except Exception,e:
logger.error('Error!!\nscreenshot.png Saved!!')
driver.save_screenshot('screenshot.png')
driver.close()
time.sleep(2170)
설치 부터 끝까지 자세한 내용은 아래 더보기를 클릭하여 보면 된다.
참고글: https://beomi.github.io/2017/02/27/HowToMakeWebCrawler-With-Selenium/