🖥️ IT, 컴퓨터/🐍 Python
[Python] 전국 올리브영 매장 크롤링 :: 매장명, 매장주소 beautifulsoup
김 홍시
2024. 11. 7. 09:37
반응형
위의 링크 혹은 상단 헤더의 '올영매장' 클릭
서울, 경기 등 시/도단위 입력 후 스크롤을 가장 하단까지 내린다.
충북은 충청북도로 입력, 전북은 전북특별자치도, 제주는 제주특별자치도, 세종은 세종특별자치시로 입력함
혹시 매장명 내에 타지역 명이 섞일 수 있으니(경기 광주) 가능하면 '광주광역시' 처럼 풀로 입력하자.
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 합치면 아래 결과가 나옴
2024년 11월 기준 전국 올리브영 매장 수 1371개
반응형