파이썬 크롤링 selenium 네이버 검색 기능해보기, 한솥 도시락 메뉴 정보 수집
셀레니움 (selenium) : 동적인 페이지(페이지를 바꾸지 않아도 바뀌는 내용들 네이버 광고, 날씨 등)의 데이터를 수집하기 위해 사용하는 라이브러리
- selenium 설치 : !pip install selenium
- webdriver 프로그램 설치 https://chromedriver.chromium.org/
1. 네이버 검색 해보기
▶ 목표
- 셀레니움을 이용해서 네이버 검색을 파이썬에서 해보기
① 셀레니움 라이브러리에서 webdriver를 불러오기 : webdriver.Chrome('주소/chromedriver.exe')
※ 주소가 치기 귀찮으면 chromedriver.exe 자체를 파이썬 문서 폴더에 같이 넣어버리기
크롬으로 네이버 접속 : .get('주소')
# 테스트 브라우저를 실행시키기 위한 라이브러리
from selenium import webdriver as wb
driver = wb.Chrome() # 브라우저 객체 생성(대소문자 조심)
driver.get('https://www.naver.com') # 브라우저 객체 실행
② 네이버 검색창 입력 태그 확인
③ 검색창 태그 정보 가져오기 : driver.find_element(by='', value='')
inputTag = driver.find_element(by='id', value='query')
inputTag
④ 입력창에 검색어 보내 보기 : .send_keys('검색어\n')
inputTag.send_keys('eat sleep code repeat\n')
⑤ 검색 명령 버튼 태그 정보 가져오기
buttonTag = driver.find_element(by='id', value='search_btn')
⑥ 검색창에 검색어를 입력하고 검색 명령 버튼을 클릭하기 : .click()
inputTag.send_keys('eat sleep code repeat')
# 검색 버튼을 클릭하기
buttonTag.click()
⑦ 페이지 뒤로 가기 및 브라우저 종료
# 페이지 뒤로가기
driver.back()
# 브라우저 종료
driver.close()
2. 한솥 도시락 메뉴 정보 수집
▶ 목표
- 한솥 도시락 > MENU > 전체 메뉴의 모든 메뉴 이름, 가격을 수집하기
- 수집한 데이터를 엑셀 파일로 저장해보기
① 한솥 도시락의 메뉴 페이지 확인
메뉴 페이지가 한번에 모두 나오는 것이 아니라 더보기를 여러 번 클릭해야 메뉴를 전부 확인 가능
② 더보기 버튼 태그 정보 확인하고 더보기를 계속 눌러 줄 수 있는 반복문 작성
- 반복문을 이용해서 자동으로 클릭 실행
- 클릭의 횟수를 알 수 없기 때문에(while) 예외 처리 필요 (try~except)
- 오류가 발생하는 코드 영역만 try문에 넣어서 예외처리
while True :
try :
nextBtn.click()
except :
print('모든 더보기 클릭 완료')
break
② 메뉴 이름, 가격 태그 확인
③ 셀레니움을 이용해 한솥 도시락 전체 메뉴 페이지를 열고, 더보기 버튼을 모두 클릭하여 모든 메뉴의 이름과 가격을 수집하기
driver = wb.Chrome()
driver.get('https://www.hsd.co.kr/menu/menu_list')
nextBtn = driver.find_element(By.CSS_SELECTOR, 'a.c_05') # 더보기 버튼 접근
while True :
time.sleep(1) # 1초 간격으로 실행 딜레이를 주기
try :
nextBtn.click()
except :
print('모든 클릭 완료')
break
name = driver.find_elements(By.CSS_SELECTOR, '.h.fz_03') # 메뉴 이름 접근
price = driver.find_elements(By.CSS_SELECTOR, '.item-price strong') # 메뉴 가격 접근
menu_lst = [[name[i].text,price[i].text] for i in range(len(name))]
menu_lst
④ 모든 메뉴 이름, 가격이 있는 리스트를 DataFrame 형태로 만들고 엑셀 파일로 저장하기
menu_df = pd.DataFrame(menu_lst, columns=['메뉴','가격'])
display(menu_df)
menu_df.to_excel('./한솥도시락메뉴.xlsx')
'Python' 카테고리의 다른 글
파이썬 크롤링 selenium 네이버 이미지 검색을 통한 데이터 수집 (0) | 2023.01.21 |
---|---|
파이썬 크롤링 requests, BeautifulSoup 네이버 영화 관람객 리플 데이터 수집 (1) | 2023.01.19 |
파이썬 크롤링 requests, BeautifulSoup 네이버 영화 평점 수집 데이터 수집 (0) | 2023.01.18 |
파이썬 크롤링 requests, BeautifulSoup 멜론 Top100 차트 데이터 수집 (0) | 2023.01.18 |
파이썬 크롤링 requests, BeautifulSoup (0) | 2023.01.16 |
댓글