๐ฉ PLAN
1. MINISTOP ํธ์์ ๋งค์ฅ ์ ๋ณด ์น ํ์ด์ง์์ ํ์ด์ฌ์ ํตํด ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ๋ค.
2. ๊ฐ์ ธ์จ ๋ฐ์ดํฐ๋ฅผ DataFrame ์ผ๋ก ๋ง๋ค๊ณ , ๋ก์ปฌ์ pickle ํ์ผ๋ก ์ ์ฅํ๋ค.
[ ๋์ ์ฌ์ดํธ ]
๋จผ์ , ๋์ ์ฌ์ดํธ์ ๊ตฌ์กฐ๋ฅผ ์ดํด๋ณด์๋ค.


MINISTOP ์ ๋ฉ์ธ ์น ํ์ด์ง์์ ๋งค์ฅ ์ฐพ๊ธฐ ๋ฒํผ์ ๋๋ฅด๋ฉด, ์ฐ๋ฆฌ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ป์ ์ ์๋ ๋งค์ฅ ์ฐพ๊ธฐ ํ์ด์ง๋ก ์ด๋ํ๋ค.
์์๋ก ์๋ฌด ์ง์ญ์ผ๋ก ์ต์ ์ ์ค์ ํด์ฃผ๊ณ , ์ฐพ๊ธฐ ๋ฒํผ์ ๋๋ฅด๋ฉด ์ค๋ฅธ์ชฝ ์ด๋ฏธ์ง์ ๊ฐ์ api ๋ฅผ ๋ณผ ์ ์๋ค.
payload ๋ฅผ ์ดํด๋ณด๋ฉฐ ๋ณ๊ฒฝํด์ฃผ์ด์ผ ํ key ๋ฅผ ํ์ธํด๋ณธ๋ค.
์ฌ๊ธฐ์, payload ์ ํน์ง์ paramInfo key ์ ๋ํด ๋ ์์๋ณด๊ธฐ ์ํด ๋ค๋ฅธ ์/๋์ ์/๊ตฐ/๊ตฌ๋ฅผ ์ค์ ํด์ฃผ๊ณ ๊ฒ์ํด๋ณด์๋ค.

๋น๊ตํด๋ณด๋ฉด paramInfo key ๊ฐ ์/๋์ ์/๊ตฐ/๊ตฌ ๊ฐ์ ์๋ฏธํจ์ ํ์ธํ ์ ์์๋ค.
๊ทธ๋ฆฌ๊ณ , Preview๋ฅผ ํตํด ์ด๋ค ์์ผ๋ก ์ ๋ณด๋ฅผ ๋ฐ์ ์ ์๋์ง ๋ฏธ๋ฆฌ ํ์ธํ ์ ์๋ค.

๊น๋ํ๊ฒ ํ์ํ ๋ฐ์ดํฐ๋ค์ ๋์ ๋๋ฆฌ ํํ๋ก ์ ๋งคํ๋์ด ์๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
๋ฐ์ดํฐ๋ฅผ ์์ฒญํด์ ๋ฐ๊ฒ ๋๋ฉด, ์์ ๊ฐ์ด dictionary ํํ, ์ฆ json ์ ์ฌ์ฉํด์ ์ ๋ณด๋ฅผ ๋ฐ์ ์ ์๊ฒ ๋ค๊ณ ์๊ฐํ๋ค.
๋๋ ์ด๋ฐ flow ๋ก ์ ๊ทผํ์ฌ ์๋์ ๊ฐ์ ์ฝ๋๋ก ์์ ํ๋ค.
โจ๏ธ Code
import requests
import json
import pickle
import pandas as pd
from tqdm import tqdm
from bs4 import BeautifulSoup as BS
mini_url = "https://www.ministop.co.kr/MiniStopHomePage/page/querySimple.do"
# cf. 'tm' ์ value ๊ฐ์ด ์์ด๋ ๋๋ค. ์ฆ, ์ค์ ์ํด์ค๋ ๋จ
mini_pay = {
"pageId": "store/store",
"sqlnum": "2",
"paramInfo": "1:",
"pageNum": "1",
"sortGu": "",
"tm": "1677986477478",
}
mini_name = []
mini_address = []
mini_phone = []
mini_ice = []
mini_lat = []
mini_lon = []
store_df = pd.DataFrame()
# 1๋ถํฐ 16๊น์ง ์์
for idx, x in enumerate(range(1, 17)):
mini_pay['sqlnum'] = 2
mini_pay["paramInfo"] = "{}:".format(x)
r = requests.post(mini_url, data=mini_pay) # json ํํ๋ก ์ ์ฅ๋ ๊ฑฐ ๋ณผ ์ ์์
num_gu = [] # number ์ gu ์ด๋ฆ ์ ์ฅ
for y in r.json()['recordList']:
num_gu.append(y['fields'])
# ๋ฐ์ดํฐ ๋ฝ์์ค๊ธฐ
mini_pay['sqlnum'] = 3
for idx, z in enumerate(num_gu):
mini_pay["paramInfo"] = "{}:{}:{}:".format(x, z[0], z[0])
r = requests.post(mini_url, data=mini_pay)
for idx, t in enumerate(r.json()['recordList']):
mini_name.append(t['fields'][0])
mini_address.append(t['fields'][1])
mini_phone.append(t['fields'][2])
mini_ice.append(t['fields'][3])
mini_lat.append(t['fields'][4])
mini_lon.append(t['fields'][5])
store_df['๋งค์ฅ๋ช
'] = mini_name
store_df['์ฃผ์'] = mini_address
store_df['์ฐ๋ฝ์ฒ'] = mini_phone
store_df['์ํํธํฌ๋ฆผ'] = mini_ice
store_df['์๋'] = mini_lat
store_df['๊ฒฝ๋']= mini_lon
store_df.to_pickle('./ministop_store_soft_latlon.pkl')
๐ DataFrame
์ ์ฝ๋๋ฅผ ํตํด, ์ต์ข DataFrame ์ ์๋์ ๊ฐ์ ํํ๋ก ์ ์ฅํ ์ ์๋ค.

'Python > [์น ํฌ๋กค๋ง]' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [ํธ์์ ํฌ๋กค๋ง] EMERT24 (0) | 2023.03.24 |
|---|---|
| [ํธ์์ ํฌ๋กค๋ง] 7-ELEVEN (0) | 2023.03.24 |
| [ํธ์์ ํฌ๋กค๋ง] CU (0) | 2023.03.24 |
| [ํธ์์ ํฌ๋กค๋ง] GS25 (0) | 2023.03.24 |