Study Anything ๐Ÿง

๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ (์›น ํฌ๋กค๋ง) (3) - ๊ฒฝ๊ธฐ ์„ธ๋ถ€ ๋ฐ์ดํ„ฐ ๋ณธ๋ฌธ

ํ”„๋กœ์ ํŠธ/[DA] ๋ฐ์ดํ„ฐ ๋ถ„์„ : ๋ฐฐ๊ตฌ

๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ (์›น ํฌ๋กค๋ง) (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 ํŒŒ์ผ๋กœ ์ €์žฅํ–ˆ๋‹ค.

๊ฒฝ๊ธฐ ์„ธ๋ถ€ ๋ฐ์ดํ„ฐ

์ด์ „์— ๋ชจ์•˜๋˜ ๊ฒฝ๊ธฐ์˜ ๋Œ€๋žต์ ์ธ ๋ฐ์ดํ„ฐ์™€ ์ด ๊ฐœ์ˆ˜๊ฐ€ ๊ฐ™์€ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์ด๋ ‡๊ฒŒ ๋‘ ๋ฒˆ์— ๊ฑธ์ณ์„œ ๊ฒฝ๊ธฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ์ˆ˜์ง‘ํ–ˆ๋‹ค. ์ด์ œ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ํ†ตํ•ด ๋ชจ๋ธ์„ ํ•™์Šต์‹œ์ผœ ๋ณผ ๊ฒƒ์ด๋‹ค.

 

 

728x90
Comments