셀레니움으로 커뮤니티 홍보하기
포스트
취소

셀레니움으로 커뮤니티 홍보하기

유튜브하는 연예인을 알리려고 만든 웹 프로젝트가 있다.

허나, 이 페이지를 방문하는 사람이 없어서 어딘가에 홍보를 하고 싶었다. 마침 중고나라에서 반복적인 글을 올리는 매크로를 보았고, 나도 홍보하는 매크로를 만들기로 생각했다.

 

셀레니움 라이브러리를 이용하여 쉽고 빠르게 매크로를 만들 수 있었다.

셀레니움python, java, C#, ruby, Perl, PHP, Javascript 언어로 사용 가능하다. - 셀레니움 Docs

자바가 편했지만, 생각보다 간단하길래 파이썬으로 짰다. 파이썬 문법을 모르지만, 구글에 검색하면 널린게 코드라 별 어려움이 없었다.

디시인사이드 유튜브 갤러리에 2시간 마다 홍보글을 자동으로 올리는 매크로를 만들었다.

190516 추가. 지금은 사용하지 않고 있다. 예약 작업 걸어뒀더니 서버가 계속 죽길래 예약작업을 없앴다. 허나, 홍보글 올리는 기능 자체는 아직까지 잘 동작하는 것을 확인했다.

 

로직은 간단하다.

1) 드라이버 로드 2) DC inside 접속 3) 로그인 4) 유튜브 갤러리 글쓰기 페이지 이동 5) 제목 & 내용 입력 6) 저장 7) 드라이버 종료

python.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/usr/bin/python3
# -*- coding: utf-8 -*- 
#youtube.py

from selenium import webdriver
import time

id = '계정 아이디'
pw = '계정 비밀번호'

URL = 'http://www.dcinside.com'
GALL = 'http://gall.dcinside.com/mgallery/board/write/?id=youtube'

TITLE = '유튜브하는 연예인 리스트'
CONTENT = "<br><p><span style='font-size: 24pt; font-family: Verdana, sans-serif;'><b>유튜브하는 연예인 알리기 프로젝트</b></span></p><p><br></p><p><a href='http://yoututu.kr' target='_blank' class='tx-link'><span style='font-size: 14pt;'>유튜튜 바로가기</span></a><br><br><img src='https://github.com/bactoria/Celeb-Youtube-Vue/raw/master/assets/yoututu1.PNG'></p><p><br><img src='https://raw.githubusercontent.com/bactoria/Celeb-Youtube-Vue/master/assets/yoututu2.PNG'><br></p>"

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument("user-agent=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36")

# 1. 드라이버 로드
driver = webdriver.Chrome('./chromedriver', chrome_options=chrome_options)
driver.implicitly_wait(3)


# 2. DC inside 접속
driver.get(URL)
time.sleep(3)

# 3. 로그인
driver.find_element_by_name('user_id').send_keys(id)
driver.find_element_by_name('pw').send_keys(pw)
driver.find_element_by_id('login_ok').click()

# 4. 유튜브 갤러리 글쓰기 페이지 이동
driver.get(GALL)
time.sleep(3)

# 5. 제목 & 내용 입력
driver.find_element_by_name('subject').send_keys(TITLE)
driver.find_element_by_id("tx_switchertoggle").click();
time.sleep(1)
driver.switch_to_frame(driver.find_element_by_xpath("//iframe[@name='tx_canvas_wysiwyg']"))
driver.find_element_by_tag_name("body").send_keys(CONTENT)

# 6. 저장
driver.switch_to_default_content()
driver.find_element_by_xpath("//button[@type='image'][@class='btn_blue btn_svc write']").click()
time.sleep(1)

# 7. 드라이버 종료
driver.quit()

브라우저 드라이버가 필요한데, Chrome Driver를 이용하였다.

(Chrome 이외에도 Firefox, IE, Safari, Opera 를 이용할 수 있어보인다. - 셀레니움 Docs)

chromedriver 파일을 다운받고 python 파일과 같은 루트에 위치시켰다.

 

1
[root@ip~~ macroDC]# ./youtube.py

실행시키면 글이 올라간다.

 

image

   

예약 작업

이제 주기적으로 youtube.py를 실행시켜주기만 하면 된다.

crontab을 이용하여 특정 시간마다 youtube.py를 실행시켰다. (crontab : 리눅스 예약 작업)

 

crontab

1
2
# 매일 2시간 간격으로 7분에 `youtube.py`를 실행시킨다. (ex. 0시 7분, 2시 7분, ...)
7 */2 * * * cd /home/ec2-user/macroDC && ./youtube.py

 

image

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

2019년 18,19주차 회고

Same-Origin Policy와 해결 방안

Comments powered by Disqus.