โ๐ป ๋ฐฐ์ด์
์ ๊ท์์ ํตํด ํฌ๋กค๋ง์, ํน์ ํ ๊ฐ์ ์ ๊ทผํ์ฌ ์ฐพ๋ ๋ฐฉ๋ฒ์ด ๊ทธ๋ฅ ์ฐพ๋ ๊ฒ ๋ณด๋ค ๋ ๊ฐํธํ๋ค๋ ๊ฒ์ ์๊ฒ ๋์๋ค.
์กฐ๊ธ์ฉ ํฌ๋กค๋ง์ ๋ํด ์ดํดํ๊ณ ์๋ ๊ณผ์ ์ด ๋์ด๊ฐ๊ณ ์๋ค.
๐ ๋ชฉ์ฐจ
1. ์ ๊ท์ ๊ธฐ์ด
2. ์ ๊ท์ ์ฐ์ต
3. daum ๊ธฐ์ฌ ๊ธฐ์ ์ด๋ฉ์ผ ์ ๊ท์์ผ๋ก ์ถ์ถํ๊ธฐ
4. CU ํธ์์ ๋งค์ฅ ์ ๋ณด ๊ฐ์ ธ์ค๊ธฐ : ๋งค์ฅ๋ช , ์ฃผ์, ์ฐ๋ฝ์ฒ, ์๋น์ค
5. CU ํธ์์ ๋งค์ฅ ์ ๋ณด ๊ฐ์ ธ์ค๊ธฐ : ์,๋ / ์,๊ตฐ,๊ตฌ / ์,๋ฉด,๋
๋ค์ด๊ฐ๋ฉฐ
์ด๋ฒ์๋ ์ ๊ท์์ ํตํด ํฌ๋กค๋ง์ ์ํ๋ ๊ฐ๋ค์ ์ฝ๊ฒ ์ฐพ์๋ด๊ณ , CU ํธ์์ ๋งค์ฅ ์ฐพ๊ธฐ ์น ํ์ด์ง ๊ธฐ๋ฐ์ผ๋ก ๊ธ์ ์์ฑํ์ต๋๋ค.
์ ๊ท์ ๊ธฐ์ด
. → ํ๊ฐ์ ๋ฌธ์
^ → ๋ฌธ์์ด ์์๊ณผ ๋งค์นญ or [ ] ์์์ ๋ฐ๋๋ฅผ ์๋ฏธ
$ → ๋ฌธ์์ด ๋ง์ง๋ง์ ๋งค์นญ
[ ] → ์งํฉ(์์ ์๋ ๊ฒ ์ค ํ๋๋ฅผ ์๋ฏธ)
| → ๋๋(OR)
( ) → ์ ๊ท์ ๊ทธ๋ฃน ๋ฌถ๊ธฐ
\w → ์ซ์ ๋๋ ๋ฌธ์(ํ๊ธ ์ ์ธ)
\d → ์ซ์
\D → ์ซ์๊ฐ ์๋ ๋ชจ๋ ๋ฌธ์
\s → ๋์ด์ฐ๊ธฐ
\S → ๋์ด์ฐ๊ธฐ ์๋ ๋ชจ๋ ๋ฌธ์
+ → 1๋ฒ ์ด์ ํจํด
* → 0๋ฒ ์ด์ ํจํด
? → 0 ๋๋ 1๋ฒ ํจํด ๋ฐ์
{ i } → i ๋ฒ ๋ฐ๋ณต
{ i, j } → i ๋ฒ ๋ถํฐ j ๋ฒ๊น์ง ๋ฐ๋ณต ํ์ฉ
์ ๊ท์ ์ฐ์ต
์ ๊ท์์ ์ฐ์ตํ๊ธฐ ์ํ ๋ฌธ์ ๋ค์ ํ์ด๋ณด์๋ค.
text_famous = """201901 Dost thou love life? Then do not squander time, for that is the stuff life is made of. (Benjamin Franklin) ๊ทธ๋๋ ์ธ์์ ์ฌ๋ํ๋๊ฐ? ๊ทธ๋ ๋ค๋ฉด ์๊ฐ์ ๋ญ๋นํ์ง ๋ง๋ผ, ์๊ฐ์ด์ผ๋ง๋ก ์ธ์์ ํ์ฑํ๋ ์ฌ๋ฃ์ด๊ธฐ ๋๋ฌธ์ด๋ค. (๋ฒค์๋ฏผ ํ๋ญํด๋ฆฐ)
201902 Life is like riding a bicycle. To keep your balance you must keep moving. (Albert Einstein) ์ธ์์ ์์ ๊ฑฐ๋ฅผ ํ๋ ๊ฒ๊ณผ ๊ฐ๋ค. ๊ท ํ์ ์ก์ผ๋ ค๋ฉด ์์ง์ฌ์ผ ํ๋ค. (์๋ฒํธ ์์ธ์ํ์ธ)
201903 Life is a tragedy when seen in close-up, but a comedy in long-shot. (Charlie Chaplin) ์ธ์์ ๊ฐ๊น์ด์ ๋ณด๋ฉด ๋น๊ทน์ด์ง๋ง ๋ฉ๋ฆฌ์ ๋ณด๋ฉด ํฌ๊ทน์ด๋ค (์ฐฐ๋ฆฌ ์ฑํ๋ฆฐ)
201904 Dream as if you'll live forever. Live as if you'll die today. (James Dean) ์์ํ ์ด ๊ฒ์ฒ๋ผ ๊ฟ๊พธ๊ณ ์ค๋ ์ฃฝ์ ๊ฒ์ฒ๋ผ ์ด์๋ผ. (์ ์์ค ๋)
201905 Life is an endless series of trainwrecks with only brief commercial like breaks of happiness. (Deadpool) ์ธ์์ด๋ ๊ดด๋ก์์ ์ฐ์์ด๊ณ , ํ๋ณต์ ๊ด๊ณ ์ฒ๋ผ ์งง๋ค. (๋ฐ๋ํ)"""
text_famous ๋ฅผ ์ด์ฉํ์ฌ ์ ๊ท์ ์ฌ์ฉ์ ํด๋ณด์.
import re
p2 = re.compile("[a-zA-Z].+[a-zA-z][.]") # ์ ๊ท์ ์ ์ฅ
p2.findall(text_famous) # p2 ์ ๊ท์์ ํด๋น ๋๋ ๋ชจ๋ ๊ฒ ์ฐพ๊ธฐ
p2 ๋ ์ด๋ค ์์ด ๋ฌธ์์ ๋ชจ๋ ๋ฌธ์์ด์ด 1๋ฒ ์ด์์ด๊ณ ๋ ์ด๋ค ์์ด ๋ฌธ์์ ๋ง์ง๋ง์ด ์์ํ . ์ผ๋ก ๋๋๋ ๊ฒ์ ์ฐพ๋ ์ ๊ท์์ด๋ค.
text_famous ์์ ํด๋น ์ ๊ท์์ ํด๋น๋๋ ๋ชจ๋ ๋ฌธ์์ด์ ์ฐพ๋๋ค. ( = ๋ชจ๋ ์์ด ๋ฌธ์ฅ์ด . ์ผ๋ก ๋๋๋ ๋ฌธ์ฅ๋ค์ด list ๋ก ์ ์ฅ)
import re
p3 = re.compile("[๊ฐ-ํฃ].+[๊ฐ-ํฃ][.]") # ์ ๊ท์ ์ ์ฅ
p3.findall(text_famous) # p3 ์ ๊ท์์ ํด๋น ๋๋ ๋ชจ๋ ๊ฒ ์ฐพ๊ธฐ
p3 ๋ ์ด๋ค ํ๊ธ๊ณผ ๋ชจ๋ ๋ฌธ์์ด์ด 1๋ฒ ์ด์์ด๊ณ ๋ ์ด๋ค ํ๊ธ๊ณผ ๋ง์ง๋ง์ด ์์ํ . ์ผ๋ก ๋๋๋ ๊ฒ์ ์ฐพ๋ ์ ๊ท์์ด๋ค.
text_famous ์์ ํด๋น ์ ๊ท์์ ํด๋น๋๋ ๋ชจ๋ ๋ฌธ์์ด์ ์ฐพ๋๋ค. ( = ๋ชจ๋ ํ๊ธ ๋ฌธ์ฅ์ด . ์ผ๋ก ๋๋๋ ๋ฌธ์ฅ๋ค์ด list ๋ก ์ ์ฅ)
daum ๊ธฐ์ฌ ๊ธฐ์ ์ด๋ฉ์ผ ์ ๊ท์์ผ๋ก ์ถ์ถํ๊ธฐ
daum ๊ธฐ์ฌ์ ์ ํ์๋ ๊ธฐ์ ์ด๋ฉ์ผ๋ค์ ํ์ด์ฌ ์ ๊ท์์ ํตํด ๊ฐ์ ธ์๋ณด์.
import requests
import re
url = "https://v.daum.net/v/20230227100502684"
r = requests.get(url)
p = re.compile("[\w._%+-]+@[\w.-]+\.[a-zA-z]{2, 4}")
list(set(p.findall(r.text)))
์ด๋ฉ์ผ ์ ๊ท์ ๊ฐ์ ๊ฒฝ์ฐ, ์ฐ๋ฆฌ๊ฐ ํํ ์๊ณ ์๋ ์ด๋ฉ์ผ ํ์์ ์๊ฐํด์ผ ํ๋ค.
์๋ฅผ ๋ค๋ฉด, abc@naver.com ๋ง๊ณ ๋ abc@hanyang.ac.kr ์ฒ๋ผ ๋ค์ ๋๋ฉ์ธ ํํ๊ฐ ๋ค๋ฅผ ์ ์์ด ์ด ์ ๊น์ง ๊ณ ๋ คํด์ ์์ฑํ๋๋ก ํ์.
CU ํธ์์ ๋งค์ฅ ์ ๋ณด ๊ฐ์ ธ์ค๊ธฐ : ๋งค์ฅ๋ช , ์ฃผ์, ์ฐ๋ฝ์ฒ, ์๋น์ค
CU ํธ์์ ์น ์ฌ์ดํธ์์ ๋งค์ฅ์๋ด > ๋งค์ฅ์ฐพ๊ธฐ์์ ์์ ์ง์ญ์ ์ ํํ์ฌ ๊ฒ์ ๋ฒํผ์ ๋๋ฅธ๋ค.
๊ฐ๋ฐ์ ๋ชจ๋๋ฅผ ํตํด, ๋คํธ์ํฌ ํญ์์ ์๋กญ๊ฒ list_Ajax.do ๋ผ๋ ํ์ผ์ ๋ณผ ์ ์๊ณ requests URL๊ณผ method ๋ฅผ ๋ณผ ์ ์๋ค.
๋คํธ์ํฌ ํญ์ payload ๋ฅผ ํ์ธํ๋ฉด, ์ด๋ฐ ์ ๋ณด๋ค์ API ๋ก ์ ๊ณตํ๊ณ ์์์ ์ ์ ์๋ค.
import requests
cu_url = "https://cu.bgfretail.com/store/list_Ajax.do"
payload = {"pageIndex" : "1",
"listType" : "",
"jumpoCode" : "",
"jumpoLotto" : "",
"jumpoToto" : "",
"jumpoCash" : "",
"jumpoHour" : "",
"jumpoCafe" : "",
"jumpoDelivery" : "",
"jumpoBakery" : "",
"jumpoFry" : "",
"jumpoMultiDevice" : "",
"jumpoPosCash" : "",
"jumpoBattery" : "",
"jumpoAdderss" : "",
"jumpoSido" : "๊ฒฝ๊ธฐ๋",
"jumpoGugun" : "๊ฐํ๊ตฐ",
"jumpodong" : "๊ฐํ์",
"user_id" : "",
"jumpoName" : "",}
r = requests.post(cu_url, data=payload)
r.text # ํ์ธ์ฉ
์ฌ๊ธฐ๊น์ง ์งํํ ๋ค์, ๋ถ์ํ๊ธฐ ์ํด bs4 ๋ฅผ ํตํด ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋๋ก ์ฐพ์๋ด์ผ ํ๋ค.
from bs4 import BeautifulSoup as BS
bs = BS(r.text)
bs # ํ์ธ์ฉ
tmp = bs.find("div", class_="detail_store").findAll("tr")[1]
ํ์ํ ๋ฐ์ดํฐ๊ฐ tmp ์์ ์์ผ๋, ์ ๊ณตํ๋ ์๋น์ค๊ฐ ๋ฌด์์ธ์ง ์ ๋ฆฌํ๊ณ ํ์ธํ ํ์๊ฐ ์๋ค.
์ฌ๊ธฐ์ ๋ณด๋ฉด class name ์ on ์ด ์๋ ๊ฒ๊ณผ ์๋ ๊ฒ์ด ์๋ค.
on ์ด ์๋ค๋ฉด ํด๋น ์ง์ ์์ ํ๊ณ ์๋ ์๋น์ค๋ผ๋ ์๋ฏธ์ด๋ค.
๊ทผ๋ฐ, ๋ด๊ฐ ํ์ฌ ๋ณด๊ณ ์๋ ์น ํ์ด์ง์ ํธ์์ ์ ๋ณด๋ 1ํ์ด์ง ํ์ ์ด๋ผ์, ๋ค์ ํ์ด์ง๋ฅผ ๋๊ฒจ์ฃผ๊ณ ๋ค์ ์ ๋ณด๋ฅผ ๋ฐ์์์ผ ํ๋๋ฐ ์ผ๋จ 1ํ์ด์ง์ ํด๋นํ๋ ์ ๋ณด๋ง ๋๊ณ ์ฌ ๊ฒ์ด๋ค. (๋์ค์ ์ ๋๋ก ์ทจํฉ ํด๋ณด๋๋ก ํ๊ฒ ๋ค.)
import re
# ์ ์ฒด ์ฝ๋์์ service ๊ฐ ์๋๋ผ sevice ๋ก ํด์ผํ๋ค.
p = re.compile(("sevice[0-9]{2} on")) # sevice class ์ฐพ๊ธฐ
tmp.finaAll("li", p) # ํ์ธ์ฉ
p2 = re.compile("_([0-9a-zA-Z]+)\.png") # ์๋น์ค ๋ช
์ฐพ๊ธฐ
p2.findall(str(tmp.findAll("li", p))) # png ๋ช
์ฐพ์
p2.findall(str(tmp.findAll("li", p)))[0].split(".")[0] # img ํ์ผ . ๊ธฐ์ค ์ผ์ชฝ
์ด์ ์๋น์ค ํญ๋ชฉ๋ค์ ์ด๋ป๊ฒ ์ถ์ถํ ์ง ์์์ผ๋, ์ด์ ์ถ์ถํ์ฌ ์ ์ฅํ๋ฉด ๋๋ค.
service = [p2.findall(str(x))[0] for x in tmp.findAll("li", p)]
for y in bs.find("div", class_="detail_store").findAll("tr")[1:]:
print([p2.findall(str(x))[0] for x in y.findAll("li", p)])
์๋น์ค๋ ์ด์ ์ด๋ฐ ์์ผ๋ก, ์ ์์ ์ธ ๊ฐ์ด ๋ค์ด๊ฐ ์ ์๋์ง ํ์ธ๋ถํฐ ํ์.
service_t = []
for y in bs.find("div", class_="detail_store").findAll("tr")[1:]:
service_t.append([p2.findall(str(x))[0] for x in y.findAll("li", p)])
์ด์ , ์ ๊ณตํ๋ ์๋น์ค ํญ๋ชฉ๋ ์ ์ฅํ์๋ค.
๊ทธ ๋ค์์ผ๋ก๋, ์ด์ ๋งค์ฅ๋ช ๋ฐ ์ฐ๋ฝ์ฒ, ์ฃผ์๋ฅผ ๊ฐ์ ธ์ค๋๋ก ํ์.
๋งค์ฅ ์ ๋ณด ๊ฐ์ ๊ฒฝ์ฐ, html ์ ํ์ธํด๋ณด๋ฉด, ํ ์ด๋ธ ํํ๋ก ์ ์ฅ๋์ด ์๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
์ด ๋ ์ฌ์ฉํ ์ ์๋ ๋ฉ์๋๊ฐ pandas ์ read_html() ์ด๋ค.
import pandas as pd
store = pd.read_html(r.text)[0]
html ์ ํ ์ด๋ธ ๊ตฌ์กฐ๋ฅผ ๋ถ์ํ์ฌ ๋ฐ์ดํฐ ์์๋ค์ DataFrame ์ผ๋ก ๋ง๋ค์ด์ค๋ค.
์ด์ , store DataFrame ์ ์๊น ์์์ ๋ง๋ ์๋น์ค ํญ๋ชฉ๋ ๋ฃ์ด์ฃผ๋๋ก ํ์.
store['์๋น์ค'] = service_t
store df ์ '์๋น์ค' column ๋ช ์ด ์๊ธฐ๊ณ , ํด๋น column ์ service_t ๊ฐ ์์ฐจ์ ์ผ๋ก ์ ์ฅ๋๋ค.
CU ๊ฐ์ ๊ฒฝ์ฐ, ๋งค์ฅ๋ช ๊ณผ ์ฐ๋ฝ์ฒ ๊ทธ๋ฆฌ๊ณ ์ฃผ์์ ์๋น์ค๊ฐ ๊ตฌ๋ถ ๋์ด ์์ง ์๊ธฐ ๋๋ฌธ์, ๊ตฌ๋ถํ๋ ์์ ๋ ํด์ฃผ์ด์ผ ํ๋ค.
๋จผ์ , ๋งค์ฅ๋ช ๊ณผ ์ฐ๋ฝ์ฒ๋ฅผ ๋ถ๋ฆฌํด๋ณด์.
# ๋งค์ฅ ์ฐ๋ฝ์ฒ ์ ๊ท์
phone = re.compile("[0-9]{2,3}-[0-9]{3,4}-[0-9]{3,4}")
store['๋งค์ฅ๋ช
/ ์ฐ๋ฝ์ฒ'].apply(lambda x : phone.findall(x)) # ์ฐ๋ฝ์ฒ๊ฐ ์๋ ๊ฒฝ์ฐ๋ ๊ณต๋ฐฑ์ด๋ค.
# ์ฐ๋ฝ์ฒ column ์ถ๊ฐํ๊ธฐ
# ์ฐ๋ฝ์ฒ๊ฐ ์๋ ๊ฒฝ์ฐ ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ์
# None ๊ฐ์ ๋ฃ์ด์ฃผ์
store['์ฐ๋ฝ์ฒ'] = store['๋งค์ฅ๋ช
/ ์ฐ๋ฝ์ฒ'].apply(lambda x : phone.findall(x)[0] if len(phone.findall(x)) > 0 else None)
๋งค์ฅ ์ ๊ท์์ ํตํด ์ฐ๋ฝ์ฒ๋ฅผ ๊ฐ์ ธ์ ํ์ธํ๊ณ , ์ฐ๋ฝ์ฒ๊ฐ ์๋ ๊ฒฝ์ฐ None ๊ฐ์ ์ ์ฅํด์ฃผ์๋ค.
์ด๋ฒ์๋, ๋งค์ฅ๋ช ์ ๋ถ๋ฆฌํด๋ณด์.
# ๋งค์ฅ๋ช
์ ๊ท์
store_p = re.compile("[๊ฐ-ํฃ]+์ ")
# ๊ฐ์ ๋ฐฉ์์ผ๋ก, ๋งค์ฅ๋ช
column ์ถ๊ฐํ๊ธฐ
store['๋งค์ฅ๋ช
'] = store['๋งค์ฅ๋ช
/ ์ฐ๋ฝ์ฒ'].apply(lambda x : store_p.findall(x)[0])
๊ฐ์ ๋ฐฉ์์ผ๋ก ๋งค์ฅ๋ช ๋ ์ ์ฅํด์ฃผ์๋ค.
์ด์ , ๋งค์ฅ๋ช ๊ณผ ์ฐ๋ฝ์ฒ๋ ๋ฐ๋ก ๋ถ๋ฆฌ๋์ด ์ ์ฅ๋์์ผ๋, ๊ธฐ์กด์ column ์ ์ ๊ฑฐํด์ฃผ์.
# axis = 1 ์ผ ๋๋, column ์ ์ ์ฉ (0 ์ผ๋๋ index, ์ฆ 'ํ'์ผ๋ก ์ ์ฉ๋๋ค.)
store.drop("๋งค์ฅ๋ช
/ ์ฐ๋ฝ์ฒ", axis = 1, inplace = True)
์ฌ๊ธฐ์ ์ฃผ์ํ ์ ์, inplace ๋ฅผ True ๋ก ์ ์ฉ์ํค๋ฉด ๋ฐ๋ก store ์ ์ ์ฉ๋๋ค.
๋ฐ๋ผ์, ์ฌ์ฉํ๊ธฐ ์ ์ ํ์ธ ์ ์ฐจ๋ฅผ ๊ผญ ๊ฑฐ์น๋ ์ต๊ด์ ๋ค์ฌ์ผ ํ๋ค.
์ด์ , ์ฃผ์ ๋ฐ ์๋น์ค column ๋ช ์ ์ฃผ์๋ก ๋ฐ๊พธ์ด์ฃผ์.
# ์ฃผ์ / ๋งค์ฅ ์ ํ ๋ฐ ์๋น์ค -> ์ฃผ์ ๋ก column ๋ช
๋ฐ๊พธ๊ธฐ
store.rename(columns={"์ฃผ์ / ๋งค์ฅ ์ ํ ๋ฐ ์๋น์ค" : "์ฃผ์"}, inplace=True)
column ์ ์ด๋ฆ์ ๋ฐ๊พธ๊ณ ์ถ์ ๋, rename() ๋ฉ์๋๋ฅผ ํตํด ๋ฐ๊ฟ ์ ์๋ค.
๋ง์ง๋ง์ผ๋ก, column ๋ค์ ์์๋ฅผ ์ง์ ํด์ ๋ฐ๊พธ๊ณ ์ถ๋ค๋ฉด,
store = store[['๋งค์ฅ๋ช
', '์ฃผ์', '์๋น์ค']]
์ด๋ ๊ฒ ๊ฐ๋จํ๊ฒ ์ง์ ํด์ฃผ๋ฉด ๋๋ค.
์ฌ๊ธฐ๊น์ง, store df ์ '๋งค์ฅ๋ช , ์ฃผ์, ์๋น์ค' ์์ผ๋ก ์ ๋ณด๊ฐ ์ ์ฅ๋์๋ค.
CU ํธ์์ ๋งค์ฅ ์ ๋ณด ๊ฐ์ ธ์ค๊ธฐ : ์,๋ / ์,๊ตฐ,๊ตฌ / ์,๋ฉด,๋
์ด์ , ์,๋ ๋ชฉ๋ก์ ๊ฐ์ ธ์ค์.
์, ๋ ๊ฐ์ ๊ฒฝ์ฐ๋ ์น ํ์ด์ง html ์์ ํ์ธํ ์ ์๊ธฐ ๋๋ฌธ์, ๊ฐ๋จํ๊ฒ ์ ๊ทผํ ์ ์๋ค.
cu_url = "https://cu.bgfretail.com/store/list.do?category=store"
city = [x.text for x in BeautifulSoup(requests.get(cu_url).text)\
.find("div", class_="search_wrap").findAll("option")][1:-2]
BS ๋ฅผ ์ฌ์ฉํ์ฌ html ์ ๋ถ์ํ์ฌ ์ด๋ ๊ฒ ์,๋ ๋ฅผ ์ป์ด์ฌ ์ ์๋ค.
๋ค์์ผ๋ก๋, ์, ๊ตฐ, ๊ตฌ ๋ชฉ๋ก์ ๊ฐ์ ธ์ค๋๋ก ํ์.
์น ํ์ด์ง์์ ์, ๋ ์ ํ์ ์์๋ก ํ๋ฉด, ์๋ก์ด GugunList.do ๊ฐ network ํญ์ ์๊ธด๋ค.
Request URL, Request Method ๊ฐ ๋์์์์ ํ์ธํ ์ ์๋ค.
๋ํ, payload ๋ฅผ ํ์ธํ๋ฉด ์ฐ๋ฆฌ๊ฐ ํ์ํ ์, ๋ ์ ๋ณด๊ฐ ์์์ ๋ณผ ์ ์๋ค.
city = "https://cu.bgfretail.com/store/GugunList.do"
city_pay = {"pageIndex" : "1",
"listType" : "",
"jumpoCode" : "",
"jumpoLotto" : "",
"jumpoToto" : "",
"jumpoCash" : "",
"jumpoHour" : "",
"jumpoCafe" : "",
"jumpoDelivery" : "",
"jumpoBakery" : "",
"jumpoFry" : "",
"jumpoMultiDevice" : "",
"jumpoPosCash" : "",
"jumpoBattery" : "",
"jumpoAdderss" : "",
"jumpodong" : "",
"user_id" : "",
"sido" : "์์ธํน๋ณ์",
"Gugun" : "",
"jumpoName" : "",}
request.post(city, data=city_pay).text # ์ฌ๊ธฐ์, json ํํ์ธ ๊ฒ์ ๋ณผ ์ ์๋ค.
# ํฌ๊ฒ GugunList ๊ฐ key, ๋ฆฌ์คํธ ๊ตฌ์กฐ๊ฐ value
# ์๊ฒ๋ CODE_NAME ์ด key, ๊ตฌ ์ด๋ฆ์ด value
requests.post(city, data=city_pay).json()['GugunList'] # json ์ผ๋ก ๋ถ๋ฌ์, value๋ฅผ ๋ณธ๋ค.
# ๋ฆฌ์คํธ ๊ตฌ์กฐ๊ฐ ๋์ค๊ฒ ๋๋ค.
# CODE_NAME key๋ก value ๋ฅผ ์ป์ด ์์ธํน๋ณ์์ ๊ตฌ ์ ๋ณด๋ฅผ ์ป์ ์ ์๋ค.
[x['CODE_NAME'] for x in requests.post(dong, data=dong_pay).json()['GugunList']]
์ง๊ธ๊น์ง ์ ๋ณด๋ก ์์ธํน๋ณ์์ ๊ตฌ ์ ๋ณด๋ฅผ ์ป๋ ๋ฐ๊น์ง ์งํํ ์ ์๋ค.
์ด์ , ๊ฐ ์, ๋ฉด, ๋์ ๋ ์ ๋ณด๋ฅผ ์ป์ด๋ณด์.
์,๊ตฐ,๊ตฌ ๋ฐฉ๋ฒ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์,๋ฉด,๋๋ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ์งํํ๋ค.
dong = "https://cu.bgfretail.com/store/DongList.do"
dong_pay = {"pageIndex": "1",
"listType": "",
"jumpoCode": "",
"jumpoLotto": "",
"jumpoToto": "",
"jumpoCash": "",
"jumpoHour": "",
"jumpoCafe": "",
"jumpoDelivery": "",
"jumpoBakery": "",
"jumpoFry": "",
"jumpoMultiDevice": "",
"jumpoPosCash": "",
"jumpoBattery": "",
"jumpoAdderss": "",
"jumpoSido": "๊ฒฝ๊ธฐ๋",
"jumpoGugun": "๊ฐํ๊ตฐ",
"jumpodong": "",
"user_id": "",
"sido": "๊ฒฝ๊ธฐ๋",
"Gugun": "๊ฐํ๊ตฐ",
"jumpoName": "",}
# ๊ฒฝ๊ธฐ๋ ๊ฐํ๊ตฐ์ ๋ ์ ๋ณด ๊ฐ์ ธ์ค๊ธฐ
[x['CODE_NAME'] for x in requests.post(dong, data=dong_pay).json()['GugunList']]
'Python > [๊ธฐ์ด ๊ฐ์ ์ ๋ฆฌ]' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
python ๊ธฐ์ด 11 (0) | 2023.03.03 |
---|---|
python ๊ธฐ์ด 10 (0) | 2023.03.03 |
python ๊ธฐ์ด 8 (0) | 2023.02.26 |
python ๊ธฐ์ด 7 (0) | 2023.02.26 |
python ๊ธฐ์ด 6 (0) | 2023.02.26 |