일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 데이터프레임
- 댓글분석
- 광주인공지능학원
- CountVectorizer
- 과대적합제어
- 자바
- 활성화함수
- jsp
- 토큰화
- iris붓꽃
- python
- sellenium
- DataFrame
- 유투브크롤링
- 크롤링
- tfidf
- Selenium
- 과대적합
- 광주국비지원학원
- permisision부여
- 파이썬
- 인공지능
- servlet
- 딥러닝
- 머신러닝
- 인공지능학원
- relu
- 스마트인재개발원
- 셀리니움
- 웹크롤링
- Today
- Total
+ Hello +
[스마트인재개발원][웹 크롤링] Selenium 모듈 | 한솥 도시락 메뉴, 가격 데이터 프레임만들기 본문
Selenium모듈
- 웹 페이지를 제어하기 위한 모듈
# 셀레니움 설치하기
!pip install selenium
1. import 작업 먼저 해주기
- webdriver : 웹 페이지를 제어하기 위한 모듈
- Keys : 컴퓨터의 키보드와 같은 역할
- time : 쉬는 시간 부여
from selenium import webdriver as wb
from selenium.webdriver.common.keys import Keys
import time
2. 크롬 드라이버 실행 (크롬버전에 맞게 설치)
3. 크롬 드라이버를 통해 네이버 화면창 켜기
- Chrome(경로)
4. 검색창의 위치 알아오기
- F12(검사) > 검색창 : input 태그의 id = query
search = driver.find_element_by_id("query")
5. 검색창에 손흥민 검색하기 (키보드)
- 검색어 입력 : .send_keys
search.send_keys("손흥민")
6. 검색하기
1) 검색버튼 클릭하기
- 검색 버튼 찾기 : .find_element_by_id()
- 검색버튼 : button 태그의 id = search_btn
search_btn = driver.find_element_by_id("search_btn")
search_btn.click()
2) 키보드로 엔터쳐서 검색하기
- .send_keys(Keys, ENTER)
search.send_keys(Keys.ENTER)
한솥도시락
- 이름, 가격 정보 수집
1. import 작업
from tqdm import tqdm_notebook as tq
from bs4 import BeautifulSoup as bs
2. 크롬브라우저를 통해 한솥 도시락 메뉴 페이지 가져오기
driver = wb.Chrome()
url = "https://www.hsd.co.kr/menu/menu_list"
driver.get(url)
3. 페이지의 source 넘겨받기
soup = bs(driver.page_source,'lxml')
4. 메뉴 이름 가져오기
- 메뉴 : h4 태그의 class = 'h fz_01'
- 클래스명 2개 이므로 > h.fz_01
menu= soup.select('h4.h.fz_03')
5. 가격 정보 가져오기
- 가격 : div의 class 명 item-price의 자손
price = soup.select('div.item-price strong')
6. 더보기 버튼 클릭하기
- 더보기 버튼 : a 태그의 class 명 c_05
btn_more = driver.find_element_by_class_name("c_05")
btn_more.click()
- 더보기 버튼이 몇개인지 알 수 없으므로 for문을 통해 반복작업
* 예외처리 : try문에서 오류가 나면 except로 빠지기
try :
for i in range(50):
btn_more.click()
time.sleep(2)
except :
print("종료되었습니다.")
7. 데이터 프레임 만들기(메뉴명, 가격)
- 메뉴, 가격 list에 정보 하나씩 넣어주는 반복문 작성
menu_list = []
price_list = []
for i in range(len(menu)):
menu_list.append(menu[i].text.strip())
price_list.append(price[i].text.strip())
print(menu_list)
print(price_list)
- 딕셔너리 구조로 만들기
info = {'menu' : menu_list, 'price' : price_list}
pd.DataFrame(info)
- 결과
* 코드 한 번에 작성 *
url = "https://www.hsd.co.kr/menu/menu_list"
driver = wb.Chrome()
driver.get(url)
time.sleep(0.3)
btn_more = driver.find_element_by_class_name("c_05")
try :
for i in range(50) :
btn_more.click()
time.sleep(2)
except :
print("종료되었습니다")
soup = bs(driver.page_source, 'lxml')
title = soup.select('h4.h.fz_03')
price = soup.select("div.item-price > strong")
time.sleep(0.3)
title_list = []
price_list = []
for i in tq(range(len(title)) :
title_list.append(title[i].text.strip())
price_list.append(price[i].text.strip()+"원")
time.sleep(0.3)
data = {"메뉴" : title_list, "가격" : price_list}
pd.DataFrame(data)
위 과정은 스마트 인재개발원에서 진행된 수업입니다.
'+ 스마트인재개발원 +' 카테고리의 다른 글
[스마트인재개발원] [웹 크롤링] Gmarket Top 100 가져오기 (0) | 2021.06.20 |
---|---|
[스마트인재개발원] [웹 크롤링] 유튜브 영상의 제목, 조회수 크롤링하기 (2) | 2021.06.09 |
[스마트인재개발원] [웹 크롤링] 멜론 TOP 100 수집하기 (0) | 2021.06.05 |
[스마트인재개발원] [웹크롤링] Request, BeautifulSoup 사용하기, 네이버 기사 제목 크롤링하기 (0) | 2021.06.04 |
0515 DB create table, alter table (0) | 2021.05.30 |