본문 바로가기

만들기/크롤러

파이썬으로 크롤링하기 - 메가박스 서울 지점명 받아오기

 

selenium과 beautifulSoup을 이용해 서울 내 메가박스 영화관 리스트를 받아오려 한다.

 

 

1. 메가박스 사이트 소스코드 확인

영화관 리스트는 아래 URL에서 확인 가능하다.

http://www.megabox.co.kr/?menuId=theater

 

소스코드를 살펴보면, 각 지역을 class명으로 구별해 둔 것을 볼 수 있다.

필자가 크롤링하려는 서울의 클래스명은 menu01이다.

 

메뉴 서울의 클래스명 확인

 

해당 메뉴를 클릭하면, 클래스가 menu01 active로 변경되고, 아래쪽에 서울 내 지역들이 동적으로 나타나는 것을 볼 수 있다.

영화관 지점명은 id가 region_10인 ul > li > a태그의 text로 확인 가능하다.

 

동적으로 생성된 극장 리스트 태그 확가 

2. 셀레니움을 이용한 동적코드 크롤링

필자가 작성한 코드는 다음과 같다.

from selenium import webdriver
from bs4 import BeautifulSoup

driver = webdriver.Chrome(r'C:\Users\smddu\Documents\chromedriver\chromedriver.exe')
driver.implicitly_wait(3)
driver.get('http://www.megabox.co.kr/?menuId=theater')
driver.find_element_by_css_selector('.menu01').click()

soup = BeautifulSoup(driver.page_source, 'html.parser')
theater = soup.select('ul#region_10 a')

for i in theater:
	print(i.text)

 

나눠서 살펴보자.

 

우선 get 메소드를 이용해 메가박스에 접속한다.

그 뒤 앞서 서울에 해당하는 클래스명 menu01을 클릭하는 동작을 수행한다.

# 메가박스 영화관 위치 확인하는 URL 접속
driver.get('http://www.megabox.co.kr/?menuId=theater')
# 클래스명 menu01 클릭
driver.find_element_by_css_selector('.menu01').click()

 

bs를 이용하기 위해, driver.page_source를 이용해 소스코드를 받아온다.

위에서 알아본대로, id가 region_10인 ul의 자손 중 a태그를 select로 크롤링한다.

해당 a태그들의 text 부분만 출력하면 완성!

# bs를 이용하기 위해 소스코드를 가져옴
soup = BeautifulSoup(driver.page_source, 'html.parser')
# 서울 내 극장리스트가 담긴 태그 a를 받아옴
theater = soup.select('ul#region_10 a')
# 해당 태그의 텍스트 부분만 출력
for i in theater:
	print(i.text)

 

3. 실행모습