크롤링

크롤링 DAY2 ( )

도키마 2024. 9. 25. 12:10



 

 

 

오늘의 노래 추천 

 

 

 



 

 

 

 

 

 

 

 

 

 

DAY2

 

 

 

 

 

 

 

 

 

 

 

 

ㅡ  한솥도시락 페이지 전체 메뉴 및 가격 크롤링 실습 ㅡ

BeautifulSoup, selenium 라이브러리 사용

 

 

 

# 라이브러리 불러오기
from selenium import webdriver as wb
# 웹브라우저 제어를 위한 라이브러리
from selenium.webdriver.common.by import By
# html 문서에서 태그와 선택자의 위치를 찾기위한 라이브러리
from selenium.webdriver.common.keys import Keys
# 웹에게 값을 입력하기위한 라이브러리
from selenium.webdriver.chrome.service import Service
# 사용자가 사용하는 최신버전의 크롬 드라이버와 일치하는 드라이버를 찾아주는 라이브러리
from webdriver_manager.chrome import ChromeDriverManager
# 최신버전의 크롬 드라이버를 찾고 다운해주는 라이브러리
from bs4 import BeautifulSoup as bs

 

라이브러리 불러오기

 

 

 

 

service = Service(ChromeDriverManager().install())
driver = wb.Chrome(service=service)
# 페이지 불러오기
driver.get('https://www.hsd.co.kr/menu/menu_list')

 

# bs객체화 : bs(parsing할 html 문서, parsing 방법)
soup = bs(driver.page_source, 'lxml')

 

menuList = []
menu = soup.select('h4.h.fz_03')
price = soup.select('span.blind+strong')

for i in range(len(menu)):
    menuList.append({'menu' : menu[i].text, 'price' : price[i].text})

pd.DataFrame(menuList)

 

출력 결과

 

 

ㅡ 더보기 버튼 누르기 자동화

 

moreBtn = driver.find_element(By.CLASS_NAME, 'c_05')
moreBtn.click() # 클릭 메서드

 

try:
    for i in range(10):
        moreBtn = driver.find_element(By.CLASS_NAME, 'c_05')
        moreBtn.click() # 클릭 메서드
except:
    soup = bs(driver.page_source, 'lxml')
    
    menuList = []
    menu = soup.select('h4.h.fz_03')
    price = soup.select('div.item-price>strong')

    for i in range(len(menu)):
        menuList.append({'menu' : menu[i].text, 'price' : price[i].text})
    
    display(pd.DataFrame(menuList))

 

try:
    service = Service(ChromeDriverManager().install())
    driver = wb.Chrome(service=service)
    # 페이지 불러오기
    driver.get('https://www.hsd.co.kr/menu/menu_list')
    
    for i in range(10):
        moreBtn = driver.find_element(By.CLASS_NAME, 'c_05')
        moreBtn.click() # 클릭 메서드
        time.sleep(2)
except:
    soup = bs(driver.page_source, 'lxml')
    
    menuList = []
    menu = soup.select('h4.h.fz_03')
    price = soup.select('div.item-price>strong')

    for i in range(len(menu)):
        menuList.append({'menu' : menu[i].text, 'price' : price[i].text})

    driver.close()
    display(pd.DataFrame(menuList))

 

(수정중)

 




 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

 



 

 

 

 

 

BYE