컴퓨터/Python
지난 포스트를 읽었다면 아래의 과정을 사용할 수 있거나, 사용하는 방법을 익힐 수 있을 겁니다.
그렇다면, 원하는 정보를 추출한 이후에 다시 검색을 하거나, 다음 페이지로 넘어가거나 이런 다양한 제어의 동작을 해야 지만이 크롤러 BOT으로서 조금 더 적합한 녀석이 될 수 있습니다.
본문에서는 Selenium을 통해 이런 제어를 어떻게 하는지 알아보도록 하겠습니다.
우선 조금 더 제어를 활용하기 쉽게 현 블로그를 예제로 해도 록 하겠습니다.
browser = webdriver.Chrome()
browser.get('https://blog-of-gon.tistory.com/category/컴퓨터/Python')
자 위와 같은 페이지를 Web드라이버를 통해 얻었다면, 그중 필요한 요소를 먼저 얻도록 하겠습니다.
items = browser.find_elements(By.CLASS_NAME,'link_category')
이후 click를 호출하여 클릭을 해주도록 합니다.
여기서 동작의 변화를 알기 위해 강제적으로 5초 정도 이후에 클릭을 해보겠습니다.
#클릭 구현하기
items = browser.find_elements(By.CLASS_NAME,'link_category')
time.sleep(5)
items[0].click()
이제 원하는 페이지로 마치 사람이 클릭하는 것과 같은 동작을 익혔습니다.
그렇다면 이제 selenium을 통해 검색을 해보도록 합시다. 검색을 하는 과정을 생각해보면 다음과 같습니다.
여기서 모르는 부분은 2가지가 있네요 문자열을 입력하는 방법과 엔터를 하는 방법 말이죠.
우선 검색을 하기 위해 검색란으로 이동하겠습니다. 그다음 검색어를 입력하는 요소까지 얻어오겠습니다.
#검색란 이동
items = browser.find_elements(By.CLASS_NAME,'btn_search')
items[0].click()
#검색창 접근
items = browser.find_elements(By.CLASS_NAME,'inp_search')
이후 send_key() 함수를 통해 키보드를 동작할 수 있습니다.
#검색창 접근
items = browser.find_elements(By.CLASS_NAME,'inp_search')
items[0].send_keys('Python')
이제 검색을 할 방법은 어딘가 있을 검색 버튼을 클릭 또는 엔터를 통해 서버에게 전송해주어야 합니다.
그렇다면, 과연 엔터는 어떻게 하는 것인가?
send_keys() 함수는 문자열뿐 아니라 키보드의 버튼을 누르는 것과 유사한 함수입니다.
즉 키보드 버튼의 명령어 또한 입력할 수 있습니다.
키보드의 버튼을 누르기 위해서 해당 모듈을 추가하고 사용해 보도록 합시다.
from selenium.webdriver.common.keys import Keys
#검색란 이동
items = browser.find_elements(By.CLASS_NAME,'btn_search')
items[0].click()
#검색창 접근
items = browser.find_elements(By.CLASS_NAME,'inp_search')
items[0].send_keys('Win32')
#키 입력하기
items[0].send_keys(Keys.ENTER)
Keys.ENTER를 통해 엔터키 입력을 하면 아래와 같은 결과가 나오게 됩니다.
본문에서는 Selenium을 통해 클릭과 키 입력을 하는 방법에 대해서 알아봤습니다.
Selenium을 통해 크롤링을 할 최소의 지식은 어느 정도 습득했습니다.
마지막으로 Keys클래스를 통해 키 입력을 하는 속성 값을 언급하면서 포스트를 마무리하겠습니다.
해당 모듈에서 Keys라는 클래스 내에 속성 값의 형태로 키보드 명령에 대한 값이 정해져 있습니다.
자세히 알 필요 없이 속성 값의 이름은 무엇이 있는지 알아보도록 하겠습니다.
등등 많은 명령어가 존재하는데 직관적이어서 직접 사용해보는 것이 좋을 듯합니다.
Python - [크롤링 실습] selenium으로 번개장터 조회하기 2 (페이지 순환) (0) | 2022.07.07 |
---|---|
Python - [크롤링 실습] selenium으로 번개장터 조회하기 1 (접속,검색,취득) (0) | 2022.07.02 |
Python - Selenium2 ( 대기 ) (0) | 2022.05.09 |
Robots.txt ? (크롤링과 규약) (0) | 2022.05.09 |
Python - Selenium (소스 및 요소 접근) (0) | 2022.05.06 |
91년생 공학엔지니어의 개발일지
TODAY :
YESTER DAY :
TOTAL :
Commnet