๐ฉ PLAN
1. EMERT24 ํธ์์ ๋งค์ฅ ์ ๋ณด ์น ํ์ด์ง์์ ํ์ด์ฌ์ ํตํด ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ๋ค.
2. ๊ฐ์ ธ์จ ๋ฐ์ดํฐ๋ฅผ DataFrame ์ผ๋ก ๋ง๋ค๊ณ , ๋ก์ปฌ์ pickle ํ์ผ๋ก ์ ์ฅํ๋ค.
[ ๋์ ์ฌ์ดํธ ]
https://www.emart24.co.kr/store
๋จผ์ , ๋์ ์ฌ์ดํธ์ ๊ตฌ์กฐ๋ฅผ ์ดํด๋ณด์๋ค.
์ด๋งํธ24๋ ๋ฉ์ธ ํ์ด์ง์์ ๋งค์ฅ์ฐพ๊ธฐ๋ฅผ ํตํด ์ ๊ทผํ ์ ์๋ค.
๋คํํ, ์ด๋งํธ24 ๊ฐ์ ๊ฒฝ์ฐ ์ง์ญ ์ ํ ์ต์ ์์ '์ ์ฒด' ์ต์ ์ ํตํด ์ ์ฒด ๋งค์ฅ ์ ๋ณด๋ฅผ ํ ๋ฒ์ ๊ฐ์ ธ์ฌ ์ ์๋ค.
๊ฐ๋ฐ์ ๋ชจ๋๋ฅผ ํตํด ์ ์ฒด ์ต์ ์ ์ ํํ๊ณ ๊ฒ์ํ๋ฉด, ์ค๋ฅธ์ชฝ ์ด๋ฏธ์ง์ ๊ฐ์ api ์ ํด๋น payload ๋ฅผ ์ดํด๋ณผ ์ ์๋ค.
์ด๋ฒ์๋ page key ๋ง ๋ฐ๊พธ์ด์ฃผ๋ฉฐ ๋ฐ๋ณตํด์ ํ์ด์ง๋ฅผ ์กฐํํ๋ฉด ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์์ ์๊ฐํ ์ ์๋ค.
(ํ ํ์ด์ง๋ง๋ค 10๊ฐ์ฉ ๋งค์ฅ ์กฐํ๊ฐ ๋๋ฏ๋ก, ๋ง์ง๋ง ํ์ด์ง๋ฅผ ์กฐํํ๋ฉด ๋ฐ์ดํฐ๊ฐ ์๊ฑฐ๋ 10๊ฐ ์ดํ์ผ ๊ฒ์ด๋ค.)
๊ทธ๋ฆฌ๊ณ Preview๋ฅผ ํตํด ์ด๋ค ์์ผ๋ก ์ ๋ณด๋ฅผ ๋ฐ์ ์ ์๋์ง ๋ฏธ๋ฆฌ ํ์ธํ ์ ์๋ค.
๊น๋ํ๊ฒ ํ์ํ ์ ๋ณด๋ค์ด ๋์ ๋๋ฆฌ ํํ๋ก ์ ์ ๋ฆฌ๋์ด ์์์ ๋ณผ ์ ์๋ค.
๋ฐ์ดํฐ๋ฅผ ์์ฒญํด์ ๋ฐ๊ฒ ๋๋ฉด, ์์ ๊ฐ์ด dictionary ํํ, ์ฆ json ์ ์ฌ์ฉํด์ ์ ๋ณด๋ฅผ ๋ฐ์ ์ ์๊ฒ ๋ค๊ณ ์๊ฐํ๋ค.
๋๋ ์ด๋ฐ flow ๋ก ์ ๊ทผํ์ฌ ์๋์ ๊ฐ์ ์ฝ๋๋ก ์์ ํ๋ค.
โจ๏ธ Code
import requests
import json
import pickle
import pandas as pd
from bs4 import BeautifulSoup as BS
payload = {
"page": "1",
"search": "",
"AREA1": "",
"AREA2": "",
"SVR_24": "",
"SVR_AUTO": "",
"SVR_PARCEL": "",
"SVR_ATM": "",
"SVR_WINE": "",
"SVR_COFFEE": "",
"SVR_SMOOTH": "",
"SVR_APPLE": "",
"SVR_TOTO": "",
}
store_df = pd.DataFrame()
page_num = 1
while True:
url = "https://www.emart24.co.kr/api1/store?page={}&search=&AREA1=&AREA2=&SVR_24=&SVR_AUTO=&SVR_PARCEL=&SVR_ATM=&SVR_WINE=&SVR_COFFEE=&SVR_SMOOTH=&SVR_APPLE=&SVR_TOTO=".format(page_num)
payload['page'] = page_num
r= requests.get(url, data=payload, verify=False)
if(not r.json()['data']) :
break
for y in r.json()['data']:
temp_df = pd.DataFrame(y, index=[0])
store_df = pd.concat([store_df, temp_df], ignore_index=True)
page_num += 1
# ๋ฐ์ดํฐ ํ๋ ์ ์ปฌ๋ผ๋ช
๋ฐ๊ฟ์ฃผ๊ธฐ
store_df.columns = ['ํ๋ฐฐ', '์ ํ์ก์ธ์๋ฆฌ', 'ํฌ์คํธ', '๊ฒฝ๋', '์ฐ๋ฝ์ฒ', '์์ฝํฝ์
', 'ํ์
๋ ์ง', '์ฆ์๋ผ๋ฉด', '์นํจ', 'ํ ํ ', '์ปคํผ', 'CODE', '์์ธ', '์์ธ์์น', '24์๊ฐ', '์ฃผ์', '์์
์ข
๋ฃ์๊ฐ', '์ง์ ๋ช
', '์๋', '์คํ๋ ์ง', '์์
์์์๊ฐ', '๋ฌด์ธ๋งค์ฅ', '์ค๋ฌด๋', 'ATM', 'KIND']
# pkl ๋ก ์ ์ฅ
store_df.to_pickle("./emart24_store_all.pkl")
๐ DataFrame
์ ์ฝ๋๋ฅผ ํตํด, ์ต์ข DataFrame ์ ์๋์ ๊ฐ์ ํํ๋ก ์ ์ฅํ ์ ์๋ค.
'Python > [์น ํฌ๋กค๋ง]' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํธ์์ ํฌ๋กค๋ง] MINISTOP (0) | 2023.03.24 |
---|---|
[ํธ์์ ํฌ๋กค๋ง] 7-ELEVEN (0) | 2023.03.24 |
[ํธ์์ ํฌ๋กค๋ง] CU (0) | 2023.03.24 |
[ํธ์์ ํฌ๋กค๋ง] GS25 (0) | 2023.03.24 |