[Python 실무] 경쟁사 가격 크롤링 - 여러 업체/브랜드/회사 물품 가격 데이터 수집하기
2024. 5. 17. 02:54ㆍ1. Data Analyst/1-1. Python
728x90
반응형
지난 글에 이어서 이번에는 복수 업체들의 데이터를 한 번에 크롤링 하는 방법을 다루겠다.
# 각 브랜드와 URL 정의
brand_urls = {
"경쟁사1": "url1",
"경쟁사2": "url2",
"경쟁사3": "url3",
"경쟁사4": "url4",
"경쟁사5": "url5",
"경쟁사6": "url6"
}
# # 웹 드라이버 설정
# options = Options()
# options.headless = True # 화면 출력 안 함 (백그라운드 실행)
# driver = webdriver.Chrome(options=options)
# 결과를 저장할 리스트 초기화
data = []
# 각 브랜드에 대해 반복
for brand, url in brand_urls.items():
driver.get(url)
time.sleep(5)
# Category 수집 -----------------------------------------------------
category_group_list = []
category_name_list = []
categories = driver.find_elements(By.CLASS_NAME, 'css-1l7wsu6')
for i in categories:
category_name = i.text
category_group = i
category_name_list.append(category_name)
category_group_list.append(category_group)
df_category = pd.DataFrame({'Category_name': category_name_list,
'Category_list': category_group_list})
# Item Name + Price 수집 -----------------------------------------------------
category_list = []
name_list = []
price_list = []
date_list = []
for i in range(len(category_group_list)):
cat_open = category_group_list[i].click()
try:
# 한 섹션
items = driver.find_elements(By.CLASS_NAME, 'css-ao3ewa')
for item in items:
category = driver.find_element(By.CLASS_NAME, 'css-jycgim').text
name = item.find_element(By.CLASS_NAME, 'css-vujpvo').text
price = item.find_element(By.CLASS_NAME, 'css-u3pmed').text
date = date.today()
category_list.append(category)
name_list.append(name)
price_list.append(price)
date_list.append(date.month)
except:
continue
df = pd.DataFrame({'Brand name': [brand] * len(category_list),
'Category': category_list,
'Item': name_list,
'Price': price_list,
'Date': date_list})
data.append(df)
# 모든 데이터프레임을 연결
final_df = pd.concat(data, ignore_index=True)
# 새로운 데이터 CSV 파일로 저장
final_df.to_csv(f'[Result]_Price_tracking_{date}.csv')
print("가격 데이터 수집이 완료되었습니다 : ", date)
# 웹 드라이버 종료
driver.quit()
728x90
반응형
'1. Data Analyst > 1-1. Python' 카테고리의 다른 글
[Python 실무] 그룹으로 묶어서 데이터 계산하기 (.groupby/ .count() .size().reset_index(name= ' ')) (0) | 2024.06.15 |
---|---|
[python 실무] 파이썬 여러조건 제외한 데이터로 새로운 데이터프레임 생성하기 (복수조건걸기) - 1초컷 (0) | 2024.05.17 |
[Python 실무] 경쟁사 가격 크롤링 (0) | 2024.05.17 |
[python 실무] pandas 천단위 구분, 소수점 2개만 보이기 - 1초컷 (0) | 2023.11.30 |
[python 실무] 파이썬 조건에 맞는 행만 제거하기 - 1초컷 (0) | 2023.11.29 |