SW/Python

파이썬 : 스타벅스 서울 전체 지점 주소 크롤링하기

얇은생각 2019. 10. 16. 07:30
반응형

코드

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
import bs4

driver = webdriver.Chrome(r'C:\Users\Yang\Desktop\chromedriver.exe')
driver.get("https://www.istarbucks.co.kr/store/store_map.do")

time.sleep(2)
driver.find_element_by_class_name('loca_search').click()

time.sleep(2)
driver.find_element_by_xpath('//*[@id="container"]/div/form/fieldset/div/section/article[1]/article/article[2]/div[1]/div[2]/ul/li[1]/a').click()

time.sleep(2)
driver.find_element_by_xpath('//*[@id="mCSB_2_container"]/ul/li[1]/a').click()

time.sleep(2)
startbuks = bs4.BeautifulSoup(driver.page_source, 'lxml')

starbucks_list = startbuks.find_all('p', class_='result_details')
starbucks_address_list = []

for starbuks in starbucks_list:
    starbucks_address_list.append(starbuks.text)

starbucks_address_list

 

파이썬 selenium을 활용해서 스타벅스 지점 주소를 크롤링할 수 있습니다. 우선 셀레니움이라는 패키지의 역할에 대해 알아야 합니다. 이 패키지는 크롬 브라우저를 파이썬 소스로 조작할 수 있도록 해줍니다. 따라서, 숨겨져 있는 내용을 클릭을 시켜 크롬 브라우저에 노출 시키고, 그리고 그 해당 소스를 가져오도록 합니다. 위 코드는, 서울 지점에 있는 주소를 모두 가져오도록, 웹페이지를 조작하고, 그 데이터를 파싱해오는 원리입니다. 이 해당 원리를 이해한다면, 다양한 데이터를 셀레니움을 활용해, 파싱해 올 수 있습니다. 

 

 

결과

스타벅스 크롤링 페이지

 

['서울특별시 강서구 화곡로 142(화곡동)02-758-8881',
 '서울특별시 강서구 강서로 267 (내발산동)02-2664-2624',
 '서울특별시 강서구 강서로13길 3 (화곡동)02-758-8538',
 '서울특별시 강서구 공항대로 248 (마곡동)02-2661-3792',
 '서울특별시 양천구 남부순환로 430 (신월동)02-758-8930',
 '서울특별시 강서구 공항대로 329 (등촌동)02-758-8883',
 '서울특별시 강서구 강서로 388 (등촌동) 그랜드마트02-758-8720',
 '서울특별시 강서구 마곡중앙6로 16 (마곡동) 117,118,119,120호02-2659-3404',
 '서울특별시 강서구 마곡동로 62 (마곡동)02-2659-3585',
 ...

 

조작한 스타벅스 지점의 페이지는 다음과 같습니다. 이제 조작을 하여, 페이지에 데이터가 노출이 되면, 그 데이터를 크롤링합니다. 크롤링한 데이터를 출력해보면, 다음과 같이 약 500 지점 주소와, 전화번호를 알 수 있습니다. 

반응형