🖥️ IT, 컴퓨터/🐍 Python

[Python] 전국 올리브영 매장 크롤링 :: 매장명, 매장주소 beautifulsoup

김 홍시 2024. 11. 7. 09:37
반응형

 

 

https://www.oliveyoung.co.kr/store/store/getStoreInfoMain.do?t_page=%ED%99%88&t_click=%EC%83%81%EB%8B%A8%ED%97%A4%EB%8D%94&t_header_type=%EB%A7%A4%EC%9E%A5%EC%95%88%EB%82%B4

 

올리브영 온라인몰

대한민국 NO.1 헬스&뷰티 스토어 OLIVEYOUNG

www.oliveyoung.co.kr

위의 링크 혹은 상단 헤더의 '올영매장' 클릭 

서울, 경기 등 시/도단위 입력 후 스크롤을 가장 하단까지 내린다.

 

충북은 충청북도로 입력, 전북은 전북특별자치도, 제주는 제주특별자치도, 세종은 세종특별자치시로 입력함

혹시 매장명 내에 타지역 명이 섞일 수 있으니(경기 광주) 가능하면 '광주광역시' 처럼 풀로 입력하자.

 

F12 개발자모드 > 우측 상단 화살표 버튼 

전체 영역 색칠되도록 클릭 

storeList 부분이 선택됨 

우클릭 > copy > copy element 클릭 

경기.html 로 저장

 

 

from bs4 import BeautifulSoup
import pandas as pd

# HTML 파일 읽기
with open("올리브영경로/경기.html", encoding='utf-8') as file:
    soup = BeautifulSoup(file, 'html.parser')

# 이름 추출
names = [tag.get_text(strip=True) for tag in soup.select('a .txt_tit')]

# 주소 추출
addresses = [tag.get_text(strip=True) for tag in soup.select('.txt_addr')]

# 데이터프레임 생성
olive_df = pd.DataFrame({
    'name': names,
    'address': addresses,
})

olive_df.to_csv("올리브영경로/경기.csv", encoding='cp949')

위의 코드를 파이썬에서 실행시키면 

 

 

 

이런 매장명, 매장 주소 csv파일이 저장됨. 

 

import os
import pandas as pd
import chardet

# 지정된 경로
directory_path = r"올리브영경로"

# 빈 리스트 생성 (데이터프레임 저장용)
dataframes = []

# 경로 내 CSV 파일 불러오기 및 데이터프레임으로 읽기
for file in os.listdir(directory_path):
    if file.endswith('.csv'):  # 확장자가 CSV인 파일만 선택
        file_path = os.path.join(directory_path, file)  # 파일 전체 경로
        
        # 파일 인코딩 감지
        with open(file_path, 'rb') as f:
            result = chardet.detect(f.read())
            encoding = result['encoding']
        
        # 감지된 인코딩으로 파일 읽기
        try:
            df = pd.read_csv(file_path, encoding=encoding)  # CSV 파일 읽기
            dataframes.append(df)  # 리스트에 추가
        except Exception as e:
            print(f"{file} 파일 읽기 실패: {e}")

# 모든 데이터프레임을 행 방향으로 합치기
combined_dataframe = pd.concat(dataframes, axis=0, ignore_index=True)

# 결과 확인
print("합쳐진 데이터프레임:")
print(combined_dataframe)

# 결과를 CSV로 저장 (필요한 경우)
output_path = r"올리브영경로/combined_data.csv"
combined_dataframe.to_csv(output_path, index=False, encoding='utf-8-sig')
print(f"합쳐진 데이터를 저장했습니다: {output_path}")

 

모든 csv 합치면 아래 결과가 나옴

 

 

올리브영_지오코딩_최종.csv
0.11MB

 

 

2024년 11월 기준 전국 올리브영 매장 수 1371개

 

반응형