본문으로 바로가기

이번 시간에는 번역 자동화에 이어 인터파크 투어 크롤링을 배워보았다.

형식은 이전과 비슷하다.

https://lafgh.tistory.com/31

 

[3주차 총정리] Selenium으로 브라우저 제어 자동화하기

Selenium이란? - 웹개발자들이 원래 사용하는 용도로, 주로 웹브라우저 호환성 문제 점검할 때 사용된다. - 스크래핑(크롤링) 용도로는 브라우저 제어를 자동화하는 용도로 사용 - HTML코드와 request.g

lafgh.tistory.com

 


다만, 이번 시간에는 추가로 배운 코드들을 소개하겠다.

1. find_element_by_

driver.find_element_by_id('SearchGNBText').send_keys('괌')
driver.find_element_by_class_name('search-btn').click()   # 검색버튼

 

우리는 태그를 불러올 때 두 가지 방법을 쓸 수 있다.

1) Selenium을 써서 driver.find_elements_ 함수를 쓰는 방법 - .text로 텍스트만 꺼내기

2) BeautifulSoup(driver.page_source, 'html.parser') 함수를 쓰는 방법 - .get_text()로 텍스트만 꺼내기

service = Service(executable_path=ChromeDriverManager().install()) 
driver = webdriver.Chrome(service=service)
driver.get('http://tour.interpark.com/')

# 1)
driver.page_source
driver.find_elements_by_class_name('infoTitle')[0].text

# 2)
web_page = BeautifulSoup(driver.page_source, 'html.parser')
web_page.find_all('h5', {'class':'infoTitle'})[0].get_text()

 

실제로 위의 두 코드의 결과는 동일하다.

 

 


여러 페이지의 정보를 찾아오도록 하는 함수도 배워보았다.

이번에는 간단하게 Post 요청에 대해 맛보기하는 시간이었다.

페이지를 1page, 2page, ... 넘겨도 URL이 바뀌지 않는 경우에는 Post 요청을 보낸 것이다.

우리는 이러한 경우에는 full_xpath를 사용해서 넘어가도록 할 수 있다.

물론 CSS selector도 할 수 있지만, 이는 아직 너무 어렵기 때문에 우리는 Copy에서 Copy full Xpath로 받아오도록 하자.

 

 

우선, 더 많은 관광지 보기 페이지로 넘어가도록 클릭하도록 하는 함수이다.

driver.find_element_by_class_name('moreBtn').click()

 

xpath로 페이지가 넘어가도록 하는 함수이다.

마지막 li[2],[3]만 바뀌기 때문에 이를 for문으로 자동으로 돌려줄 수 있다.

driver.find_element_by_xpath('/html/body/div[3]/div/div[1]/div[2]/div[4]/div[3]/ul/li[2]').click()
driver.find_element_by_xpath('/html/body/div[3]/div/div[1]/div[2]/div[4]/div[3]/ul/li[3]').click()

 


다음 시간에 Post 요청을 더 자세히 배울 예정이다.

그리고 중요한 것은 가상브라우저 사용이 끝났다면, X로 브라우저를 꺼도 소용이 없다.

반드시 코드로 종료해주어야 한다.

driver.close()
driver.quit()