๐ŸŒฑ → ๐ŸŒณ

๋ชจ๊ฐ์ฝ” ํŒŒ์ด์ฌ ํฌ๋กค๋ง 6์ผ์ฐจ ๋ณธ๋ฌธ

Server/Python

๋ชจ๊ฐ์ฝ” ํŒŒ์ด์ฌ ํฌ๋กค๋ง 6์ผ์ฐจ

BAY 2022. 3. 21. 13:56
728x90

๊ธ€๋กœ๋งŒ ๋ดค์„ ๋• ๋˜๊ฒŒ ์‰ฌ์›Œ๋ณด์˜€๋Š”๋ฐ, ๋ง‰์ƒ ์‹ค์Šต ๋”ฐ๋ผํ•  ๋•Œ 

์˜ค๋ฅ˜๊ฐ€ ์ž๊พธ๋‚˜์„œ ๋‹ต๋‹ตํ–ˆ๋˜,, ใ…œใ…œ 

์•„์ง๋„ ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ์ง€ ๋ชปํ–ˆ๋‹ค. ์ฐ์ฐํ•ด 

๊ทธ๋Ÿผ ์‹œ์ž‘ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค. 

 

#6์ผ์ฐจ. ์ •์  ํฌ๋กค๋งโ‘ 

ํฌ๋กค๋ง์„ ๋ณธ๊ฒฉ์ ์œผ๋กœ ์‹œ์ž‘ํ•˜๊ธฐ ์ „, ๋‘ ๊ฐ€์ง€๋ฅผ ๋จผ์ € ์ƒ๊ฐํ•ด์•ผํ•œ๋‹ค. 

โœ”๏ธ ํฌ๋กค๋ง์„ ํ•  ์›น ์‚ฌ์ดํŠธ ์„ ์ •

โœ”๏ธ ๋ฐ์ดํ„ฐ ์„ ์ •

 

๐Ÿ“Œ ํฌ๋กค๋ง ๋Œ€์ƒ ์‚ฌ์ดํŠธ ์‚ดํŽด๋ณด๊ธฐ

ํฌ๋กค๋ง์„ ํ•  ์›น ์‚ฌ์ดํŠธ์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์„ ์ •ํ•œ ํ›„์—๋Š” ๊ผญ ํ•ด๋‹น ์‚ฌ์ดํŠธ๋ฅผ ์‚ดํŽด๋ณด์•„์•ผ ํ•œ๋‹ค. 

์ •์ /๋™์  ํฌ๋กค๋ง ์ค‘ ์–ด๋–ค ๊ฒƒ์ด ์ ํ•ฉํ•œ์ง€ ์ •ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ

 

๋กœ๋˜ ๋‹น์ฒจ ๋ฒˆํ˜ธ ์‚ฌ์ดํŠธ๋ฅผ ํฌ๋กค๋งํ•˜๊ธฐ๋กœ ํ•˜์˜€๋‹ค. 

https://dhlottery.co.kr/gameResult.do?method=byWin

 

๋กœ๋˜6/45 - ํšŒ์ฐจ๋ณ„ ๋‹น์ฒจ๋ฒˆํ˜ธ

1007ํšŒ ๋‹น์ฒจ๊ฒฐ๊ณผ (2022๋…„ 03์›” 19์ผ ์ถ”์ฒจ) ๋‹น์ฒจ๋ฒˆํ˜ธ 8 11 16 19 21 25 1007ํšŒ ์ˆœ์œ„๋ณ„ ๋“ฑ์œ„๋ณ„ ์ด ๋‹น์ฒจ๊ธˆ์•ก, ๋‹น์ฒจ๊ฒŒ์ž„ ์ˆ˜, 1๊ฒŒ์ž„๋‹น ๋‹น์ฒจ๊ธˆ์•ก, ๋‹น์ฒจ๊ธฐ์ค€, ๋น„๊ณ  ์•ˆ๋‚ด ์ˆœ์œ„ ๋“ฑ์œ„๋ณ„ ์ด ๋‹น์ฒจ๊ธˆ์•ก ๋‹น์ฒจ๊ฒŒ์ž„ ์ˆ˜ 1๊ฒŒ์ž„

dhlottery.co.kr

 

ํ•˜๋‚˜์˜ ์›น ํŽ˜์ด์ง€ ์•ˆ์— ํ•„์š”ํ•œ ๋‹น์ฒจ ๋ฒˆํ˜ธ๊ฐ€ ๋ชจ๋‘ ๋‚˜ํƒ€๋‚˜ ์žˆ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. 

F12 ํ‚ค๋ฅผ ๋ˆŒ๋Ÿฌ ๋ฒˆํ˜ธ๋ฅผ ์ˆ˜์ง‘ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•œ์ง€ ํ™•์ธํ•ด ์ฃผ๋ฉด ๋œ๋‹ค. 

 

select ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ, ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋œ html ํƒœ๊ทธ๋ฅผ ์ฐพ์•„ ๋ณธ๋‹ค. 

ํƒœ๊ทธ๋Š” 'div'์ด๊ณ  class๊ฐ€ 'nums'์ธ HTML ์š”์†Œ <div class="nums"> ์•ˆ์—

์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๋‹น์ฒจ ๋ฒˆํ˜ธ๊ฐ€ ๋ชจ๋‘ ํฌํ•จ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. 

 

์™ผ์ชฝ์— ์žˆ๋Š” ํ™”์‚ดํ‘œ 'โ–ถ' ๋ฅผ ํด๋ฆญํ•˜๋ฉด ํƒœ๊ทธ๊ฐ€ ์—ด๋ฆฌ๋ฉด์„œ, ํ•˜์œ„ ํƒœ๊ทธ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

<div class="num win">ํƒœ๊ทธ์— 6๊ฐœ, <div class="num bonus"> ํƒœ๊ทธ์— 1๊ฐœ๊ฐ€ ์ €์žฅ๋˜์–ด์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธ ํ•˜์˜€๋‹ค. 

 

๋กœ๋˜ ์‚ฌ์ดํŠธ์˜ ํŠน์ง•์„ ์ •๋ฆฌํ•ด๋ณด์ž๋ฉด

โœ”๏ธ ์›น ์‚ฌ์ดํŠธ์˜ ์ฃผ์†Œ์— ์ ‘์†ํ•˜๋ฉด, ํ•œ ํŽ˜์ด์ง€ ๋‚ด์— ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชจ๋‘ ๋“ฑ์žฅ

โœ”๏ธ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ํƒœ๊ทธ๋ฅผ ์‚ดํŽด๋ณธ ๊ฒฐ๊ณผ ํด๋ฆญ, ์ž…๋ ฅ, ํŽ˜์ด์ง€ ์ด๋™ ๋“ฑ์˜ ๋ณ€ํ™”๊ฐ€ ์—†์–ด๋„ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ๊ฐ€๋Šฅ

โ€‹ -> ์ •์ ํฌ๋กค๋ง์— ์ ํ•ฉ

 

๐Ÿ“Œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ 'requests'

 

์ •์ ํฌ๋กค๋ง์„ ์œ„ํ•œ ์ฒซ ๋ฒˆ์งธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” 'requests' ์ด๋‹ค.

์ด์ „์—๋„ ๋งํ–ˆ๋“ฏ, requests ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ํŒŒ์ด์ฌ์—์„œ ์›น์— ์š”์ฒญ์„ ํŽธํ•˜๊ฒŒ ์ „์†ก ์‹œ์ผœ์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค. 

 

๐Ÿ“Œ ์›น์‚ฌ์ดํŠธ์˜ HTML ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

์ „์ฒด html ์ฝ”๋“œ๋ฅผ ๋ฝ‘์•„ ์˜จ ํ›„ get ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›น ํŽ˜์ด์ง€์˜ ๋‚ด์šฉ์„ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

โœ… get() ํ•จ์ˆ˜

requests ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ get() ํ•จ์ˆ˜๋Š” ์›น ํŽ˜์ด์ง€์˜ ๋‚ด์šฉ์„ ์š”์ฒญํ•˜๋Š” ํ•จ์ˆ˜

requests.get(" ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ฌ URL " )

 

๐Ÿ“Œ ํŒŒ์ด์ฌ ์ฝ”๋“œ ์ž‘์„ฑ

import requests

URL = 'https://dhlottery.co.kr/gameResult.do?method=byWin'
raw = requests.get(URL)
print(raw)

๐Ÿ‘‰ ์ถœ๋ ฅ๊ฒฐ๊ณผ

<Response [200]>

<Response [200]>์€ get ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋ณด๋‚ธ ์š”์ฒญ์ด ์ •์ƒ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์—ˆ๋‹ค๋Š” ์˜๋ฏธ

 

Response ๋’ค์— ๋‚˜์˜ค๋Š” 200์„ ์ƒํƒœ์‘๋‹ต์ฝ”๋“œ๋ผ๊ณ  ํ•˜๊ณ ,

์š”์ฒญ์ด ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌ๋˜์—ˆ๋Š”์ง€์— ๋”ฐ๋ผ 404, 500 ๋“ฑ์˜ ๊ฐ’์„ ๊ฐ€์ง„๋‹ค.

  • 1xx (์ •๋ณด): ์š”์ฒญ์„ ๋ฐ›์•˜์œผ๋ฉฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ณ„์†ํ•œ๋‹ค
  • 2xx (์„ฑ๊ณต): ์š”์ฒญ์„ ์„ฑ๊ณต์ ์œผ๋กœ ๋ฐ›์•˜์œผ๋ฉฐ ์ธ์‹ํ–ˆ๊ณ  ์ˆ˜์šฉํ•˜์˜€๋‹ค
  • 3xx (๋ฆฌ๋‹ค์ด๋ ‰์…˜): ์š”์ฒญ ์™„๋ฃŒ๋ฅผ ์œ„ํ•ด ์ถ”๊ฐ€ ์ž‘์—… ์กฐ์น˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค
  • 4xx (ํด๋ผ์ด์–ธํŠธ ์˜ค๋ฅ˜): ์š”์ฒญ์˜ ๋ฌธ๋ฒ•์ด ์ž˜๋ชป๋˜์—ˆ๊ฑฐ๋‚˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋‹ค
  • 5xx (์„œ๋ฒ„ ์˜ค๋ฅ˜): ์„œ๋ฒ„๊ฐ€ ๋ช…๋ฐฑํžˆ ์œ ํšจํ•œ ์š”์ฒญ์— ๋Œ€ํ•ด ์ถฉ์กฑ์„ ์‹คํŒจํ–ˆ๋‹ค

HTML ์ฝ”๋“œ ์ถœ๋ ฅ

print(raw.text)

 

์‹ค์ œ๋กœ ๋กœ๋˜ ๋ฒˆํ˜ธ ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜๋Š” ์ง€ ํ™•์ธ 

import requests

URL = 'https://dhlottery.co.kr/gameResult.do?method=byWin'
raw = requests.get(URL)
target = '<div class="nums">'

if target in raw.text:
    idx = raw.text.index(target)
    print(raw.text[idx:idx + 578])

โญ ์‹คํ–‰๊ฒฐ๊ณผ

์ฝ”๋“œ ๋ฐ ์‹คํ–‰๊ฒฐ๊ณผ

๋กœ๋˜ ๋ฒˆํ˜ธ ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

โญ์ •๋ฆฌํ•˜๊ธฐโญ

โœ” ํฌ๋กค๋ง ํ•˜๊ธฐ ์ „ ์ƒ๊ฐํ•  2๊ฐ€์ง€

- ํฌ๋กค๋ง์„ ํ•  ์›น ์‚ฌ์ดํŠธ ์„ ์ •

- ๋ฐ์ดํ„ฐ ์„ ์ •

=> ์‚ฌ์ดํŠธ์™€ ์ ํ•ฉํ•œ ํฌ๋กค๋ง ๋ฐฉ๋ฒ• ๊ณ ๋ฅด๊ธฐ (์ •์ /๋™์ )

โœ” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

- ์›น์‚ฌ์ดํŠธ์˜ HTML ์ฝ”๋“œ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์œ„ํ•ด

โœ” requests ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (์ •์  ํฌ๋กค๋ง ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)

- get() ํ•จ์ˆ˜๋กœ ์›น ํŽ˜์ด์ง€์˜ ๋‚ด์šฉ์„ ์š”์ฒญ

 

์—ฌ๊ธฐ๊นŒ์ง€๊ฐ€ ์˜ค๋Š˜ ๋ฐฐ์šด ๋‚ด์šฉ์ด๊ณ , ๋‚ด๊ฐ€ ๋‚œ ์˜ค๋ฅ˜์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด๋ณด์ž๋ฉด

์‹คํ–‰ ์˜ค๋ฅ˜

์ด๋ก  ๊ณต๋ถ€๋ฅผ ํ•˜๊ณ  ๋‚˜์„œ ์ถ”ํ›„์— ํ˜‘์—… ํ”„๋กœ์ ํŠธ ํ•  ๋•Œ git์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๊ธ€์„ ๋ณด๊ณ  

์นœํ•ด์ง€๋ ค๊ณ  ๋…ธ๋ ฅ์ค‘์ด๋‹ค. 

 

๊ทธ๋ž˜์„œ ์˜ค๋Š˜ ๋ฐฐ์šด ์ฝ”๋“œ๋ฅผ github์— ์˜ฌ๋ฆฌ๊ณ ์ž git ์ €์žฅ์†Œ์— ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌ - ๋ถ™์—ฌ๋„ฃ๊ธฐ๋ฅผ ํ–ˆ๋Š”๋ฐ๋„ ์ž๊พธ 

ModuleNotFoundError: No module named 'requests'

์ด๋Ÿฐ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. 

 

๊ตฌ๊ธ€์— ๊ฒ€์ƒ‰๋„ ํ•ด๋ณด๊ณ  ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•์„ ์จ๋ดค๋Š”๋ฐ๋„ ์‹คํ–‰์ด ์•ˆ๋˜๋Š” ์ค‘์ด๋‹ค. . . 

๋„๋Œ€์ฒด ๋ญ๊ฐ€ ๋ฌธ์ œ์ง€,, 

 

๋˜ desktop์—์„œ ํ•˜๋ฉด ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰์ด ๋œ๋‹ค. 

๋ญ๊ฐ€ ๋ฌธ์ œ์ง•,,

728x90