Python/Crawling

[Crawling] 한솥 페이지 메뉴 가져오기

퓨어맨 2022. 5. 25. 17:47
from selenium import webdriver as wb
from selenium.webdriver.common.keys import Keys
import pandas as pd
import time
from bs4 import BeautifulSoup as bs

url = 'https://www.hsd.co.kr/menu/menu_list#none'
driver = wb.Chrome()

# 예외처리 try문에서 오류가 나면 except으로 빠짐
# 더보기 버튼을 눌러서 제일 끝까지 내리기
for i in range(10):
    try:
        btn = driver.find_element_by_css_selector('a.c_05')
        btn.click()
        time.sleep(0.3)
    except:
        print("더보기 끝")
        
soup = bs(driver.page_source, 'lxml') # driver.page_source == rs.text

# 메뉴명, 가격 가져오기
title = soup.select('h4.fz_03')
price = soup.select('div.item-price > strong')

title_list = []
price_list = []
rank_list = []

# 각각의 리스트에 가져온 데이터 삽입
for i in range(len(title)):
    title_list.append(title[i].text.strip())
    price_list.append(price[i].text.strip())
    rank_list.append(i+1)

# DataFrame 만들기
dic = {'번호' : rank_list, '메뉴명' : title_list, '가격' : price_list}
df = pd.DataFrame(dic)

# index를 번호로 지정
df = df.set_index('번호')