반응형
Notice
Recent Posts
Recent Comments
Link
지구정복
[Python] 리눅스CentOS 7에서 파이썬으로 웹 크롤링하기 2 (selenium- css태그) 본문
데이터 엔지니어링 정복/Python
[Python] 리눅스CentOS 7에서 파이썬으로 웹 크롤링하기 2 (selenium- css태그)
eeaarrtthh 2021. 5. 17. 11:29728x90
반응형
출처 : https://wikidocs.net/35955
-순발력게임 selenium으로 실행하기
이번에는 순발력 게임을 셀리니움을 이용해서 실행해보자.
순발력게임 링크는 여기 -> https://zzzscore.com/1to50/
아래처럼 각 div에서 XPath를 누른다.
(XPath는 XML 문서의 특정 요소나 속성에 접근하기 위한 경로를 지정하는 언어이다)
복사해서 붙여넣어보면 아래처럼 div의 순서가 25까지 있는 것을 알 수 있다.
이제 아래코드로 작성해서 게임을 해보자.
#//*[@id="grid"]/div[1]
#//*[@id="grid"]/div[2]
#//*[@id="grid"]/div[3]
#//*[@id="grid"]/div[25]
from selenium import webdriver
from pickle import TRUE
driver = webdriver.Chrome('chromedriver')
driver.get("https://zzzscore.com/1to50/")
#브라우저에서 사용되는 엔진 자체에서 파싱되는 시간을 기다려준다.
#만일 지정된 시간안에 파싱이 완료되지 않으면 에러 출력한다.
#파싱이 끝나면 다음 코드로 넘어간다.
driver.implicitly_wait(300)
#전역변수 num, 현재 찾아야될 숫자이다.
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()
12초 나왔다 ㅎㅎ
-색맹 테스트
각 div값에서 css rgba값을 가져온 다음 Counter함수로 개수가 1인 rgba값을 찾는다. 개수가 1이면 그 색깔만 유일한 것이므로 정답이다. 개수가 1인 index값을 이용해서 버튼을 누르도록한다.
그리고 60초라는 시간 제한이 있으니 time.time()함수(1970년1월1일0시0분0초이후부터 현재까지의 시간을 초로 반환)를 이용해서 analysis()함수를 계속 실행한다.
#//*[@id="grid"]/div[1]
#//*[@id="grid"]/div[2]
#//*[@id="grid"]/div[230]
from selenium import webdriver
from pprint import pprint
import time
from collections import Counter
driver = webdriver.Chrome('chromedriver')
driver.get('https://zzzscore.com/color/')
driver.implicitly_wait( 300 )
btns = driver.find_elements_by_xpath('//*[@id="grid"]/div')
def analysis():
btns_rgba = [ btn.value_of_css_property('background-color') for btn in btns ]
#pprint( btns_color )
#정답인 rgba는 개수가 1이고 나머지rgba는 개수가 여러개이므로 개수가 1인것이 정답이다.
result = Counter(btns_rgba)
#pprint( result )
for key, value in result.items():
print( key, value)
if value == 1:
answer = key
break
else:
answer = None
print( "No Answer" )
if answer:
index = btns_rgba.index(answer)
btns[index].click()
if __name__=="__main__":
start = time.time()
while time.time() - start <= 60:
analysis()
class="main"을 이용한 코드는 아래와 같다. 더 쉽지만 위의 예제에서는 css태그를 사용하는 것에 의의가 있다.
from selenium import webdriver
from pprint import pprint
import time
driver = webdriver.Chrome('chromedriver')
driver.get('http://zzzscore.com/color/')
driver.implicitly_wait( 300 )
start = time.time()
while time.time() - start <= 60:
try:
btn = driver.find_element_by_class_name('main')
btn.click()
except:
pass
728x90
반응형
'데이터 엔지니어링 정복 > Python' 카테고리의 다른 글
[Python] 리눅스CentOS 7에서 파이썬으로 웹 크롤링하기 4 (selenium - 네이버 로그인하기) (0) | 2021.05.17 |
---|---|
[Python] 리눅스CentOS 7에서 파이썬으로 웹 크롤링하기 3 (selenium - 트위치 영상 다운로드하기) (0) | 2021.05.17 |
[Python] 리눅스CentOS 7에서 파이썬으로 웹 크롤링하기 (selenium - 유튜브 검색하기) (0) | 2021.05.16 |
[Python] 리눅스CentOS 7에서 파이썬으로 웹 크롤링하기(requests, BeautifulSoup) (1) | 2021.05.16 |
[Python] Linux CentOS 7에 파이썬 pip3 설치하기 (0) | 2021.05.16 |
Comments