일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- MVVM pattern
- 안드로이드 mvp
- prisma
- 안드로이드 테스트
- 안드로이드 디자인패턴
- Android test
- flutter
- mvvm
- 안드로이드
- graphQL
- unit test
- 자바기초
- 웹크롤링
- Android
- ubuntu python
- dagger-hilt
- Data structure
- java
- 유니티
- Nexus GraphQL
- 파이썬 크롤링
- PYTHON
- LinkedList
- Dependency Injection
- Apollo GraphQL
- Apollo Server
- 우분투 파이썬
- Kotlin
- 자바
- Design Pattern
- Today
- Total
Hun's Blog
[Python] 웹 크롤링 6 - 1 to 50 봇 본문
참고
파이썬 레시피 - 웹 활용 입문편을 공부하면서 정리한 내용
1to50 게임해보기
1. 태그 구성
-> 25개의 버튼은 div로 되어있다.
-> 게임에 사용되는 모든 버튼 요소 정보를 가져온다.
-> 각 버튼의 내부 텍스트를 파악하여 몇번 버튼인지 파악한다.
-> 찾는 숫자면 클릭한다.
-> div 태그 내부에 style 이라는 정보밖에 없어서 구분할 수가없다. 이럴 땐 xpath를 사용한다.
-> xpath를 찾는다.
->*[@id="grid"]/div[1], //*[@id="grid"]/div[2] ... //*[@id="grid"]/div[25]
2. 스크립트 작성
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
from selenium import webdriver
driver.implicitly_wait(300)
btns = driver.find_elements_by_xpath('//*[@id="grid"]/div[*]')
num = 1
def clickBtn():
global num
btns = driver.find_elements_by_xpath('//*[@id="grid"]/div[*]')
for btn in btns:
print(True)
num += 1
return
while num<=50:
clickBtn()
|
2-1
driver = webdriver.Chrome('chromedriver')
driver.get('http://zzzscore.com/1to50/')
-> from selenium 의 webdriver() 메소드를 사용해 크롬 드라이버와 연결한다.
-> get() 메소드에 url 을 입력하여 해당 url을 크롬 웹브라우저로 실행시킨다.
-> driver 변수에 담는다.
2-2
driver.implicitly_wait(300)
-> implicitly_wait() 메소드는 특정 상태가 될때까지 기다리고, 상태가 되면 바로 실행한다.
-> 300초의 시간동안 웹드라이버의 크롬브라우저가 입력받은 url을 실행하고 문제없이 페이지가 로딩되어 실행되면 true를 반환하면서 다음으로 넘어가게 된다.
2-3
btns = driver.find_elements_by_xpath('//*[@id="grid"]/div[*]')
-> webdriver의 find_elements_by_xpath() 메소드에 위에서 추출한 xpath를 배열번호를 [*] 로 지정하여 입력한다.
-> 해당 xpath의 형태를 가진 모든 elemetns를 찾아 btns변수에 담는다.
-> print(len(btns)) 로 btns 배열의 길이를 확인한다.
2-4
*clickBtn() 모듈
num = 1
-> 전역변수 num
def clickBtn():
-> 파이썬의 모듈로서 자바의 메소드와 같은 방식으로 사용된다.
global num
-> global 키워드를 사용하면 전역 영역에 있는 변수를 지역 영역으로 사용할 수 있고 값을 변경할 수 있다.
btns = driver.find_elements_by_xpath('//*[@id="grid"]/div[*]')
-> 버튼을 클릭하면 btns 가 변경되므로 다시한번 모든 버튼을 받아온다.
for btn in btns:
-> btns 배열을 검사하는 for문
print(btn.text, end='\t')
-> 각각의 xpath 태그에 표시된 text 를 표시한다.
-> \t 는 문자열 사이 탭 간격을 줄 대 사용한다.
if btn.text == str(num):
-> btn.text 가 num의 text와 같으면 클릭해야하는 태그라고 판단한다.
btn.click()
-> 해당 xpath 태그를 .clickI() 메소드를 전송하여 클릭하도록 한다.
print(True)
num += 1
-> 1씩 증가
return
2-5
while num<=50:
clickBtn()
-> clickBtn() 모듈을 50번 실행한다.
'Language > Python' 카테고리의 다른 글
[Python] 웹 크롤링 8 - 트위치 클립 다운로드 (0) | 2020.04.06 |
---|---|
[Python] 웹 크롤링 7 - 색감테스트 봇 구현 (0) | 2020.04.06 |
[Python] 웹 크롤링 5 - selenium을 활용한 유튜브 키워드 검색하기 (0) | 2020.04.06 |
[Python] 웹 크롤링 4 - 네이버 웹툰 썸네일 가져오기 (0) | 2020.04.06 |
[Python] 웹 크롤링 3 - 네이버 웹툰 제목 가져오기 (0) | 2020.04.05 |