Study Anything ๐ง
๋ฐ์ดํฐ ์์ง (์น ํฌ๋กค๋ง) (3) - ๊ฒฝ๊ธฐ ์ธ๋ถ ๋ฐ์ดํฐ ๋ณธ๋ฌธ
๋ฐ์ดํฐ ์์ง (์น ํฌ๋กค๋ง) (3) - ๊ฒฝ๊ธฐ ์ธ๋ถ ๋ฐ์ดํฐ
์ 2022. 3. 27. 00:10ํฌ๋กค๋ง์ ์งํํ๋ ๋ฐฉ๋ฒ์ ํฌ๋กค๋ง(1) ํฌ์คํธ์ ํฌ๋กค๋ง(2) ํฌ์คํธ์์ ์์ธํ ๋ค๋ฃจ์๋ค.
ํฌ๋กค๋ง(2) ํฌ์คํธ์ ๋ง์ง๋ง์์ ์๊ธฐํ๋ฏ์ด ์ด๋ฒ ํฌ์คํธ์์๋ ๋ ๋ฒ์งธ ํฌ๋กค๋ง์์ ์์งํ ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํด์ ์ธ ๋ฒ์งธ ํฌ๋กค๋ง์ ์ํํ๋ ค๊ณ ํ๋ค.
(1) ์์งํ ํ๊ทธ ์ฐพ๊ธฐ
์ด๋ฒ์๋ ์๋์ ์น ํ์ด์ง์์ ๋ฐ์ดํฐ๋ฅผ ๋ชจ์ ์์ ์ด๋ค.
url์ ๋ณด๋ฉด "https://m.sports.naver.com/game/20211016018F2/record" ์ ํํ๋ก,
๊ณตํต๋ถ๋ถ ๋ค์ '๊ฒฝ๊ธฐ๋ ์ง(20211016)+018(๋ฆฌ๊ทธ ๊ณ ์ ๋ฒํธ์ด๋ค. 18๋ฒ์งธ ๋ฆฌ๊ทธ๋ผ๋ ๋ป)+F(์ฌ์๋ถ)+๊ฒฝ๊ธฐ๋ฒํธ' ๊ฐ ๊ฒฝ๊ธฐ๋ง๋ค ๋ฐ๋๋ ๋ด์ฉ์ด๋ค.
๋ฐ๋ก ์ด๊ฒ ๋๋ฌธ์ ์ด์ ํฌ์คํธ์์ ๋ฐ์ดํฐ๋ฅผ ์์งํ ๋ ๊ฐ๊ณต๋ ์ ๋ ์ง์ ๊ฒฝ๊ธฐ ๋ฒํธ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๊ฒ์ด๋ค.
ํ ๊ฒฝ๊ธฐ์์์ ์ธ๋ถ ๊ธฐ๋ก๋ค์ด ๋์์๋ค.
์ด ์ค [๊ณต๊ฒฉ ์ฑ๊ณต๋ฅ , ๋ธ๋กํน, ์๋ธ, ์๋ ๋ฒ์ค, ๋๊ทธ, ๋ฆฌ์๋ธ, ์ธํธ] ๋ฐ์ดํฐ๋ฅผ ํตํด ์ธ๋ถ ๊ธฐ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ง๋ค ๊ฒ์ด๋ค.
๋ฐ์ดํฐ๋ฅผ ๋ชจ์ผ๊ธฐ ์ํด ํ๊ทธ๊ฐ ๋ํ๋์๋ ์ฝ๋๋ฅผ ์ดํด๋ณด์๋ค.
๊ธฐ์กด๊ณผ ๊ฐ์ด table ์์ ๋ฐ์ดํฐ๋ค์ด ์๋๋ฐ ๋ญ๊ฐ ๊ธฐ์กด ๋ฐฉ๋ฒ๋๋ก ํ๊ธฐ์๋ ๋ณต์กํด ๋ณด์ธ๋ค.
ํ์ง๋ง ์์ธํ ๋ณด๋ฉด ๊ฐ์ ์ ์ฅํ๋ ๋ถ๋ถ์ div ํ๊ทธ ์์ ํด๋์ค๋ช ์ด "MatchRecord_score__n8YYu"์ผ๋ก ๋ชจ๋ ๋์ผํ๋ค.
๋ฐ๋ผ์ ์ด๋ฒ์๋ ์กฐ๊ธ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ชจ์๋ณผ ๊ฒ์ด๋ค.
(2) ์ฝ๋ ์์ฑ
์ฝ๋ ์์ฑ์์ ๊ธฐ์กด๊ณผ ๊ณตํต์ธ ๋ถ๋ถ์ ์๋ตํ๋ค.
์ผ๋จ ์ด์ ์ ์์งํ ์ ๋ ์ง, ๊ฒฝ๊ธฐ ๋ฒํธ, ์ด ์ธํธ ์๋ฅผ ์ ์ฅํ ๋ฆฌ์คํธ์ ๊ธธ์ด๋ ์๋ก ๊ฐ๋ค.
๋ฐ๋ผ์ ๋ ์ง ๋ฆฌ์คํธ๋ฅผ ์ด์ฉํด ๋ฐ๋ณต๋ฌธ์ ๋ฒ์๋ฅผ ์ง์ ํ๊ณ ๊ฐ ๋ ์ง, ๊ฒฝ๊ธฐ๋ฒํธ, ์ด ์ธํธ ์๋ฅผ ์๋ก์ด ๋ณ์์ ์ ์ฅํ๋ค.
๋ค์์ url ์ ์ค์ ํ๋ ๋ถ๋ถ์ธ๋ฐ, ์ด๋ฒ ์์ฆ ์ ๊ท ๋ฆฌ๊ทธ๋ 2021๋ 10์๋ถํฐ 2022๋ 03์๊น์ง ์งํ๋์๋ค.
๋ฐ๋ผ์ url ์ ๋ ์ง๋ฅผ ์ค์ ํ๋ ๋ถ๋ถ์ด ์์ ๋ฐ๋ผ ์ฐ๋๊ฐ ๋ค๋ฅธ๋ฐ, date ๋ณ์์ ์กฐ๊ฑด๋ฌธ์ ํตํด ์ค์ ํด์ฃผ์๋ค.
๊ทธ๋ฆฌ๊ณ ์์์ ๋ฏธ๋ฆฌ ์ฐพ์๋์ div ํ๊ทธ์ ํด๋์ค๋ช ์ผ๋ก ์์๋ค์ ์ฐพ์๋ค. (find_elements)
"MatchRecord_score__n8YYu" ์ ํด๋์ค๋ช ์ผ๋ก ๊ฐ์ง ํ๊ทธ๋ค์ ๋ชจ๋ ๋ชจ์ผ๊ณ ๊ทธ ์ค ๋ช ๋ฒ์งธ์ธ์ง์ ๋ฐ๋ผ ๊ฐ์ ์ ์ฅํ ๊ฒ์ด๋ค. ์๋ฅผ ๋ค์ด ๊ณต๊ฒฉ ์ฑ๊ณต๋ฅ ์ 2,3 ์ธ๋ฑ์ค, ๊ณต๊ฒฉ ์ด ๊ฐ์๋ 4,5 ์ธ๋ฑ์ค์ ์ ์ฅ๋์ด ์์๋ค.
์ถ๊ฐ๋ก ๊ณต๊ฒฉ ์ฑ๊ณต๋ฅ ์ธ์ ๋ฐ์ดํฐ๋ ๊ฒฝ๊ธฐ ๋์ค์ ์ด ๊ฐ์์ธ๋ฐ ์ด๋ฅผ ์ธํธ ๋น ๊ฐ์๋ก ๋ณํํ๊ณ 2์ ์๋ฆฌ๊น์ง ๋ฐ์ฌ๋ฆผํ๋ค.
๋ํ ๋ฒ์ค ๋ถ๋ถ์ ์๋ ๋ฒ์ค์ด ๋ฑ๋ก๋์ด ์์๊ธฐ ๋๋ฌธ์ ์์๋ฅผ ๋ฐ๊พธ์ด ์ ์ฅํ๋ค.
(๋ง์ฐฌ๊ฐ์ง๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฆฌ์คํธ์ ์ถ๊ฐํ๋ ๋ถ๋ถ์ ์๋ตํ๋ค.)
for i in range(len(ndatelist)):
date = ndatelist[i]
gamenum = gamenumlist[i]
setnum = setlist[i]
if date[0]=='1':
search_url = "https://m.sports.naver.com/game/"+'2021'+date+"018F"+gamenum+"/record"
else:
search_url = "https://m.sports.naver.com/game/"+'2022'+date+"018F"+gamenum+"/record"
...
# ํฌ๋กค๋ง ํ ๋ฐ์ดํฐ ํด๋์ค ์ฐพ๊ธฐ
val = browser.find_elements_by_class_name('MatchRecord_score__n8YYu')
atsuccH = float(val[2].text)
atsuccA = float(val[3].text)
atcntH = round(int(val[4].text)/setnum,2)
atcntA = round(int(val[5].text)/setnum,2)
blcntH = round(int(val[6].text)/setnum,2)
blcntA = round(int(val[7].text)/setnum,2)
svcntH = round(int(val[8].text)/setnum,2)
svcntA = round(int(val[9].text)/setnum,2)
errcntH = round(int(val[13].text)/setnum,2)
errcntA = round(int(val[12].text)/setnum,2)
digcntH = round(int(val[14].text)/setnum,2)
digcntA = round(int(val[15].text)/setnum,2)
rscntH = round(int(val[16].text)/setnum,2)
rscntA = round(int(val[17].text)/setnum,2)
setcntH = round(int(val[18].text)/setnum,2)
setcntA = round(int(val[19].text)/setnum,2)
...
(3) ๋ฐ์ดํฐ ์ ์ฅ
์ด๋ ๊ฒ ๋ชจ์ ๋ฐ์ดํฐ๋ค์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ฐ์ดํฐ ํ๋ ์์ผ๋ก ๋ณํํ ํ csv ํ์ผ๋ก ์ ์ฅํ๋ค.
์ด์ ์ ๋ชจ์๋ ๊ฒฝ๊ธฐ์ ๋๋ต์ ์ธ ๋ฐ์ดํฐ์ ์ด ๊ฐ์๊ฐ ๊ฐ์ ๊ฒ์ ๋ณผ ์ ์๋ค.
์ด๋ ๊ฒ ๋ ๋ฒ์ ๊ฑธ์ณ์ ๊ฒฝ๊ธฐ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ์์งํ๋ค. ์ด์ ๊ฐ์ง๊ณ ์๋ ๋ฐ์ดํฐ๋ค์ ํตํด ๋ชจ๋ธ์ ํ์ต์์ผ ๋ณผ ๊ฒ์ด๋ค.
'ํ๋ก์ ํธ > [DA] ๋ฐ์ดํฐ ๋ถ์ : ๋ฐฐ๊ตฌ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐ์ดํฐ ์์ง (์น ํฌ๋กค๋ง) (2) - ๊ฒฝ๊ธฐ ๋ฐ์ดํฐ (0) | 2022.03.26 |
---|---|
๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ - ๊ฒฐ์ธก๊ฐ ์ฒ๋ฆฌ (0) | 2022.03.13 |
๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ - PySpark์์ SQL ์ฌ์ฉํ๊ธฐ (0) | 2022.03.12 |
ํ๋ก์ ํธ ์ค๋ช & ๋ฐ์ดํฐ ์์ง (์น ํฌ๋กค๋ง), ์ ์ฅ - ์ ์ ๋ฐ์ดํฐ (0) | 2022.03.11 |