- Today
- Total
Recent Posts
Recent Comments
Archives
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 파이썬 알고리즘
- 알고리즘 강의
- 중간시험
- 파이썬활용
- 면접 파이썬
- 파이썬3
- 코딩문제
- 코딩시험
- 알고리즘 강좌
- 파이썬 강좌
- 프로그래밍
- 자료구조 강의
- selenium
- gdrive
- 채용문제
- 파이썬 자료구조
- 기말시험
- Crawling
- 쉬운 파이썬
- 셀레니움
- 파이썬 입문
- python data structure
- 파이썬 강의
- python 중간고사
- 자료구조
- c언어
- 크롤링
- 파이썬
- 대학시험
- 알고리즘
Notice
반원 블로그
[파이썬 레시피 - 웹 활용 입문편] 02. 웹 자동화 - C. 1 to 50 봇 본문
2018~/파이선 레시피 웹 활용 입문편
[파이썬 레시피 - 웹 활용 입문편] 02. 웹 자동화 - C. 1 to 50 봇
반원_SemiCircle 2019. 6. 8. 15:171to50 직접해보기
해볼 수 있는 사이트는 여기입니다. 직접 해보고 플레이되는 과정을 파악해봅시다.
http://zzzscore.com/1to50/
1to50 코드 분석
우리는 "각 버튼들에 어떤 글자가 들어있는가?"를 파악해서 클릭할 버튼을 찾아냅니다.
크롬 개발자 도구를 이용하면 알겠지만, 버튼처럼 보일 뿐 사실 영역을 잡아주는 div 태그를 사용하고 있습니다. 여기서는 그냥 버튼이라고 하겠습니다.
우리가 해야할 작업은 크게 3가지입니다.
- 게임에 사용되는 모든 버튼 요소 정보를 가져온다.
- 각 버튼(영역)의 내부내용(.text)를 파악한다.
- 우리가 찾는 숫자면 클릭한다.
먼저 5x5에서 (1,1)위치에 있는 버튼의 xpath를 copy하여 확인해보고, (1,2), (1,3) 도 확인하면 다음과 같습니다.
(1,1)위치 div의 xpath : //*[@id="grid"]/div[1]
(1,2)위치 div의 xpath : //*[@id="grid"]/div[2]
(1,3)위치 div의 xpath : //*[@id="grid"]/div[3]
..
(5,5)위치 div의 xpath : //*[@id="grid"]/div[25]
즉, //*[@id="grid"]/div[xx] 형태로 되있는 것을 모두 감지하기위해, 변하는 부분에 *를 넣어 //*[@id="grid"]/div[*] 로 해당 요소를 전부 탐색해봅시다.
from selenium import webdriver
driver = webdriver.Chrome('chromedriver')
driver.get('http://zzzscore.com/1to50')
driver.implicitly_wait(300)
btns = driver.find_elements_by_xpath('//*[@id="grid"]/div[*]')
print(len(btns))
print(btns[0].text) #0번 요소의 텍스트
print()
1번 누르기
가져온 버튼 요소 중 텍스트가 1인 것을 찾아 클릭하도록 코드를 작성해봅시다.
현재 검색된 버튼들을 모두 검사하다가, 만일 1인 버튼을 찾으면 클릭하도록 반복문 for를 작성합니다.
from selenium import webdriver
driver = webdriver.Chrome('chromedriver')
driver.get('http://zzzscore.com/1to50')
driver.implicitly_wait(300)
btns = driver.find_elements_by_xpath('//*[@id="grid"]/div[*]')
# print(len(btns))
# print(btns[0].text)
# print()
for btn in btns:
# print(btn.text)
if btn.text == "1":
btn.click()
1~50까지 클릭
이제 윗 작업을 1부터 50까지 해야됩니다. 여태까지 작성한 코드를 함수로 만들고, 클릭해야 될 목표를 1부터 50까지 변하도록 코드를 작성해봅시다.
from selenium import webdriver
driver = webdriver.Chrome('chromedriver')
driver.get('http://zzzscore.com/1to50')
driver.implicitly_wait(300)
#전역변수
#현재 찾아야될 숫자
num = 1
def clickBtn():
global num
btns = driver.find_elements_by_xpath('//*[@id="grid"]/div[*]')
for btn in btns:
print(btn.text, end='\t')
if btn.text == str(num):
btn.click()
print(True)
num += 1
return
while num<=50:
clickBtn()
'2018~ > 파이선 레시피 웹 활용 입문편' 카테고리의 다른 글
[파이썬 레시피 - 웹 활용 입문편] 03. 메일 - A. 구글 메일 보내기 (0) | 2019.06.15 |
---|---|
[파이썬 레시피 - 웹 활용 입문편] 02. 웹 자동화 - F. Driver를 숨기려면? (0) | 2019.06.15 |
[파이썬 레시피 - 웹 활용 입문편] 02. 웹 자동화 - E. 트위치 클립 다운로드 (0) | 2019.06.15 |
[파이썬 레시피 - 웹 활용 입문편] 02. 웹 자동화 - D. 색맹테스트 봇 (0) | 2019.06.08 |
[파이썬 레시피 - 웹 활용 입문편] 02. 웹 자동화 - B. 유튜브 키워드 검색 (0) | 2019.06.08 |
[파이썬 레시피 - 웹 활용 입문편] 02. 웹 자동화 - A. Selenium 설치 (0) | 2019.06.08 |
[파이썬 레시피 - 웹 활용 입문편] 01. 웹 크롤링 - D. 네이버 웹툰 썸네일 가져오기 (0) | 2019.06.01 |
[파이썬 레시피 - 웹 활용 입문편] 01. 웹 크롤링 - C. 네이버 웹툰 제목 가져오기 (0) | 2019.06.01 |
Comments