๋ฐ์ดํ„ฐ ๊ณผํ•™์— ๋ฌด์—‡์ด ์ž˜๋ชป๋  ์ˆ˜ ์žˆ๋‚˜์š”? ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘

๋ฐ์ดํ„ฐ ๊ณผํ•™์— ๋ฌด์—‡์ด ์ž˜๋ชป๋  ์ˆ˜ ์žˆ๋‚˜์š”? ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘
์˜ค๋Š˜๋‚  100500๊ฐœ์˜ ๋ฐ์ดํ„ฐ ๊ณผํ•™ ๊ณผ์ •์ด ์žˆ์œผ๋ฉฐ ๋ฐ์ดํ„ฐ ๊ณผํ•™์—์„œ ๊ฐ€์žฅ ๋งŽ์€ ๋ˆ์„ ๋ฐ์ดํ„ฐ ๊ณผํ•™ ๊ณผ์ •์„ ํ†ตํ•ด ์–ป์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ์˜ค๋žซ๋™์•ˆ ์•Œ๋ ค์ ธ ์™”์Šต๋‹ˆ๋‹ค(์‚ฝ์„ ํŒ” ์ˆ˜ ์žˆ๋Š”๋ฐ ์™œ ๋•…์„ ํŒŒ๋‚˜์š”?). ์ด ์ฝ”์Šค์˜ ๊ฐ€์žฅ ํฐ ๋‹จ์ ์€ ์‹ค์ œ ์ž‘์—…๊ณผ ์•„๋ฌด ๊ด€๋ จ์ด ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•„๋ฌด๋„ ๊นจ๋—ํ•˜๊ณ  ์ฒ˜๋ฆฌ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํ•„์š”ํ•œ ํ˜•์‹์œผ๋กœ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ฝ”์Šค๋ฅผ ๋– ๋‚˜ ์‹ค์ œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด ๋งŽ์€ ๋‰˜์•™์Šค๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” ๋‚˜์™€ ๋‚ด ๋™๋ฃŒ, ๋™๋ฃŒ๋“ค์—๊ฒŒ ์ผ์–ด๋‚œ ์‹ค์ œ ์‚ฌ๊ฑด์„ ๋ฐ”ํƒ•์œผ๋กœ "๋ฐ์ดํ„ฐ ๊ณผํ•™์—์„œ ๋ฌด์—‡์ด ์ž˜๋ชป๋  ์ˆ˜ ์žˆ๋Š”๊ฐ€"๋ผ๋Š” ์ผ๋ จ์˜ ๋…ธํŠธ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ ์‚ฌ๋ก€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ผ๋ฐ˜์ ์ธ ๋ฐ์ดํ„ฐ ๊ณผํ•™ ์ž‘์—…์„ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ๋ฐœ์ƒํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ์ž‘์—…๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์‚ฌ๋žŒ๋“ค์ด ์‹ค์ œ ๋ฐ์ดํ„ฐ๋กœ ์ž‘์—…์„ ์‹œ์ž‘ํ•  ๋•Œ ๊ฐ€์žฅ ๋จผ์ € ์‹ค์ˆ˜ํ•˜๋Š” ๊ฒƒ์€ ์‹ค์ œ๋กœ ์šฐ๋ฆฌ์—๊ฒŒ ๊ฐ€์žฅ ๊ด€๋ จ์„ฑ์ด ๋†’์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๊ธฐ์‚ฌ์˜ ํ•ต์‹ฌ ๋ฉ”์‹œ์ง€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘, ์ •๋ฆฌ ๋ฐ ์ค€๋น„ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์‹œ๊ฐ„, ๋ฆฌ์†Œ์Šค ๋ฐ ๋…ธ๋ ฅ์„ ์ฒด๊ณ„์ ์œผ๋กœ ๊ณผ์†Œํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋ฌด์—‡์„ ํ•ด์•ผ ํ•˜๋Š”์ง€ ๋…ผ์˜ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‹ค์–‘ํ•œ ์ถ”์ •์— ๋”ฐ๋ฅด๋ฉด ์ •๋ฆฌ, ๋ณ€ํ™˜, ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ, ๊ธฐ๋Šฅ ์—”์ง€๋‹ˆ์–ด๋ง ๋“ฑ์— 80~90%์˜ ์‹œ๊ฐ„์ด ์†Œ์š”๋˜๊ณ  ๋ถ„์„์—๋Š” 10~20%์˜ ์‹œ๊ฐ„์ด ์†Œ์š”๋˜๋Š” ๋ฐ˜๋ฉด, ๊ฑฐ์˜ ๋ชจ๋“  ๊ต์œก ์ž๋ฃŒ๋Š” ๋ถ„์„์—๋งŒ ์ค‘์ ์„ ๋‘๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋กœ ์„ธ ๊ฐ€์ง€ ๋ฒ„์ „์˜ ๊ฐ„๋‹จํ•œ ๋ถ„์„ ๋ฌธ์ œ๋ฅผ ์‚ดํŽด๋ณด๊ณ  "์•…ํ™”๋˜๋Š” ์ƒํ™ฉ"์ด ๋ฌด์—‡์ธ์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ๋ฐ ์ปค๋ฎค๋‹ˆํ‹ฐ ๋น„๊ต ์ž‘์—…์˜ ์œ ์‚ฌํ•œ ๋ณ€ํ˜•์„ ๋‹ค์‹œ ๊ณ ๋ คํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. Reddit ํ•˜์œ„ ๋ ˆ๋”ง XNUMX๊ฐœ
  2. Habr์˜ ๋‘ ์„น์…˜
  3. Odnoklassniki์˜ ๋‘ ๊ทธ๋ฃน

์ด๋ก ์ƒ์˜ ์กฐ๊ฑด๋ถ€ ์ ‘๊ทผ ๋ฐฉ์‹

์‚ฌ์ดํŠธ๋ฅผ ์—ด๊ณ  ์˜ˆ์ œ๋ฅผ ์ฝ์–ด๋ณด์„ธ์š”. ๋ช…ํ™•ํ•˜๋‹ค๋ฉด ์ฝ๊ธฐ์— ๋ช‡ ์‹œ๊ฐ„, ์˜ˆ์ œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ๋””๋ฒ„๊น…ํ•˜๋Š” ๋ฐ ๋ช‡ ์‹œ๊ฐ„์„ ํˆฌ์žํ•˜์„ธ์š”. ์ˆ˜์ง‘ํ•˜๋Š” ๋ฐ ๋ช‡ ์‹œ๊ฐ„์ด ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ๋ช‡ ์‹œ๊ฐ„์„ ์˜ˆ๋น„๋กœ ํˆฌ์žํ•˜์„ธ์š”(XNUMX๋ฅผ ๊ณฑํ•˜๊ณ  N์‹œ๊ฐ„์„ ๋”ํ•˜์„ธ์š”).

ํ•ต์‹ฌ ์‚ฌํ•ญ: ์˜ˆ์ƒ ์‹œ๊ฐ„์€ ์†Œ์š” ์‹œ๊ฐ„์— ๋Œ€ํ•œ ๊ฐ€์ •๊ณผ ์ถ”์ธก์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

์œ„์—์„œ ์„ค๋ช…ํ•œ ์กฐ๊ฑด๋ถ€ ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋‹ค์Œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ถ”์ •ํ•˜์—ฌ ์‹œ๊ฐ„ ๋ถ„์„์„ ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ๋Š” ์–ผ๋งˆ์ด๋ฉฐ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์ˆ˜์ง‘ํ•ด์•ผ ํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์–‘์€ ์–ผ๋งˆ์ž…๋‹ˆ๊นŒ(*์•„๋ž˜ ์ฐธ์กฐ*).
  • ํ•œ ๊ธฐ๋ก์˜ ์ˆ˜์ง‘ ์‹œ๊ฐ„์€ ์–ผ๋งˆ๋‚˜ ๋˜๋ฉฐ, ๋‘ ๋ฒˆ์งธ ๊ธฐ๋ก์„ ์ˆ˜์ง‘ํ•˜๋ ค๋ฉด ์–ผ๋งˆ๋‚˜ ๊ธฐ๋‹ค๋ ค์•ผ ํ•ฉ๋‹ˆ๊นŒ?
  • ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ชจ๋“  ๊ฒƒ์ด ์‹คํŒจํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ ์žฌ์‹œ์ž‘์„ ์‹œ์ž‘ํ•˜๋Š” ์ฝ”๋“œ ์ž‘์„ฑ์„ ๊ณ ๋ คํ•ด๋ณด์„ธ์š”.
  • ์Šน์ธ์ด ํ•„์š”ํ•œ์ง€ ํŒŒ์•…ํ•˜๊ณ  API๋ฅผ ํ†ตํ•ด ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ์–ป๋Š” ์‹œ๊ฐ„์„ ์„ค์ •ํ•˜์„ธ์š”.
  • ๋ฐ์ดํ„ฐ ๋ณต์žก์„ฑ์˜ ํ•จ์ˆ˜๋กœ ์˜ค๋ฅ˜ ์ˆ˜๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ํŠน์ • ์ž‘์—…์— ๋Œ€ํ•ด ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค(๊ตฌ์กฐ, ๋ณ€ํ™˜ ์ˆ˜, ์ถ”์ถœ ๋Œ€์ƒ ๋ฐ ๋ฐฉ๋ฒ•).
  • ๋น„ํ‘œ์ค€ ํ”„๋กœ์ ํŠธ ๋™์ž‘๊ณผ ๊ด€๋ จ๋œ ๋„คํŠธ์›Œํฌ ์˜ค๋ฅ˜ ๋ฐ ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.
  • ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์ด ๋ฌธ์„œ์— ์žˆ๋Š”์ง€ ํ‰๊ฐ€ํ•˜๊ณ  ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•๊ณผ ์–‘์ด ์–ผ๋งˆ๋‚˜ ํ•„์š”ํ•œ์ง€ ํ‰๊ฐ€ํ•˜์‹ญ์‹œ์˜ค.

๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์‹œ๊ฐ„์„ ์ถ”์ •ํ•˜๋ ค๋ฉด ์‹ค์ œ๋กœ "์‹ค์‹œ ์ค‘์ธ ์ •์ฐฐ"์— ์‹œ๊ฐ„๊ณผ ๋…ธ๋ ฅ์„ ํˆฌ์žํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์•ผ๋งŒ ๊ณ„ํš์ด ์ ์ ˆํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ "๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ์–ผ๋งˆ๋‚˜ ๊ฑธ๋ฆฌ๋‚˜์š”?"๋ผ๊ณ  ์•„๋ฌด๋ฆฌ ๊ฐ•์š”ํ•˜๋”๋ผ๋„ ์˜ˆ๋น„ ๋ถ„์„์„ ์œ„ํ•ด ์‹œ๊ฐ„์„ ๋ฒŒ๊ณ  ๋ฌธ์ œ์˜ ์‹ค์ œ ๋งค๊ฐœ ๋ณ€์ˆ˜์— ๋”ฐ๋ผ ์‹œ๊ฐ„์ด ์–ผ๋งˆ๋‚˜ ๋‹ฌ๋ผ์งˆ์ง€ ๋…ผ์Ÿํ•ด ๋ณด์„ธ์š”.

์ด์ œ ๊ทธ๋Ÿฌํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋ณ€๊ฒฝ๋˜๋Š” ๊ตฌ์ฒด์ ์ธ ์˜ˆ๋ฅผ ๋ณด์—ฌ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

์š”์ : ์ถ”์ •์€ ์ž‘์—…์˜ ๋ฒ”์œ„์™€ ๋ณต์žก์„ฑ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ์ฃผ์š” ์š”์†Œ์— ๋Œ€ํ•œ ๋ถ„์„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

์ถ”์ธก ๊ธฐ๋ฐ˜ ์ถ”์ •์€ ๊ธฐ๋Šฅ์  ์š”์†Œ๊ฐ€ ์ถฉ๋ถ„ํžˆ ์ž‘๊ณ  ๋ฌธ์ œ ์„ค๊ณ„์— ํฌ๊ฒŒ ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ๋Š” ์š”์†Œ๊ฐ€ ๋งŽ์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ข‹์€ ์ ‘๊ทผ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‹ค์ˆ˜์˜ ๋ฐ์ดํ„ฐ ์‚ฌ์ด์–ธ์Šค ๋ฌธ์ œ์˜ ๊ฒฝ์šฐ์—๋Š” ๊ทธ๋Ÿฌํ•œ ์š”์†Œ๊ฐ€ ์—„์ฒญ๋‚˜๊ฒŒ ๋งŽ์•„์ ธ์„œ ๊ทธ๋Ÿฌํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์€ ๋ถ€์ ์ ˆํ•ด์ง‘๋‹ˆ๋‹ค.

Reddit ์ปค๋ฎค๋‹ˆํ‹ฐ ๋น„๊ต

๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๊ฒฝ์šฐ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค(๋‚˜์ค‘์— ๋ฐํ˜€์ง€๊ฒ ์ง€๋งŒ). ์ผ๋ฐ˜์ ์œผ๋กœ ์†”์งํ•˜๊ฒŒ ๋งํ•˜๋ฉด ๊ฑฐ์˜ ์ด์ƒ์ ์ธ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณต์žก์„ฑ ์ฒดํฌ๋ฆฌ์ŠคํŠธ๋ฅผ ํ™•์ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  • ๊น”๋”ํ•˜๊ณ  ๋ช…ํ™•ํ•˜๋ฉฐ ๋ฌธ์„œํ™”๋œ API๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋งค์šฐ ๊ฐ„๋‹จํ•˜๋ฉฐ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ํ† ํฐ์ด ์ž๋™์œผ๋กœ ํš๋“๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ์ด ํŒŒ์ด์ฌ ๋ž˜ํผ - ์˜ˆ๊ฐ€ ๋งŽ์•„์š”.
  • Reddit์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„ํ•˜๊ณ  ์ˆ˜์ง‘ํ•˜๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ(Python ๋ž˜ํผ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•˜๋Š” YouTube ๋™์˜์ƒ๊นŒ์ง€ ํฌํ•จ) ์˜ˆ๋ฅผ ๋“ค๋ฉด.
  • ์šฐ๋ฆฌ์—๊ฒŒ ๊ฐ€์žฅ ํ•„์š”ํ•œ ๋ฉ”์†Œ๋“œ๋Š” API์— ์กด์žฌํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ์ฝ”๋“œ๊ฐ€ ๊ฐ„๊ฒฐํ•˜๊ณ  ๊น”๋”ํ•ด ๋ณด์ž…๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” ๊ฒŒ์‹œ๋ฌผ์— ๋Œ€ํ•œ ๋Œ“๊ธ€์„ ์ˆ˜์ง‘ํ•˜๋Š” ํ•จ์ˆ˜์˜ ์˜ˆ์ž…๋‹ˆ๋‹ค.

def get_comments(submission_id):
    reddit = Reddit(check_for_updates=False, user_agent=AGENT)
    submission = reddit.submission(id=submission_id)
    more_comments = submission.comments.replace_more()
    if more_comments:
        skipped_comments = sum(x.count for x in more_comments)
        logger.debug('Skipped %d MoreComments (%d comments)',
                     len(more_comments), skipped_comments)
    return submission.comments.list()

์—์„œ ๊ฐ€์ ธ์˜จ ์ด ํฌ์žฅ์„ ์œ„ํ•œ ํŽธ๋ฆฌํ•œ ์œ ํ‹ธ๋ฆฌํ‹ฐ ์„ ํƒ.

์ด๊ฒƒ์ด ์ตœ์„ ์˜ ๊ฒฝ์šฐ๋ผ๋Š” ์‚ฌ์‹ค์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์‹ค์ œ ์ƒํ™œ์—์„œ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ์š”์†Œ๋ฅผ ๊ณ ๋ คํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • API ์ œํ•œ - ๋ฐ์ดํ„ฐ๋ฅผ ์ผ๊ด„์ ์œผ๋กœ ๊ฐ€์ ธ์™€์•ผ ํ•ฉ๋‹ˆ๋‹ค(์š”์ฒญ ๊ฐ„ ๋Œ€๊ธฐ ๋“ฑ).
  • ์ˆ˜์ง‘ ์‹œ๊ฐ„ - ์™„์ „ํ•œ ๋ถ„์„๊ณผ ๋น„๊ต๋ฅผ ์œ„ํ•ด ๊ฑฐ๋ฏธ๊ฐ€ ํ•˜์œ„ ๋ ˆ๋”ง์„ ํ†ต๊ณผํ•˜๋Š” ๋ฐ๋งŒ ์ƒ๋‹นํ•œ ์‹œ๊ฐ„์„ ํ™•๋ณดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ด‡์€ ์„œ๋ฒ„์—์„œ ์‹คํ–‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋…ธํŠธ๋ถ์—์„œ ์‹คํ–‰ํ•˜๊ณ  ๋ฐฐ๋‚ญ์— ๋„ฃ๊ณ  ๋น„์ฆˆ๋‹ˆ์Šค๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ VPS์—์„œ ๋ชจ๋“  ๊ฒƒ์„ ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ๋ชจ์…˜ ์ฝ”๋“œ habrahabr10์„ ์‚ฌ์šฉํ•˜๋ฉด ๋น„์šฉ์˜ 10%๋ฅผ ์ถ”๊ฐ€๋กœ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ผ๋ถ€ ๋ฐ์ดํ„ฐ์˜ ๋ฌผ๋ฆฌ์  ์ ‘๊ทผ ๋ถˆ๊ฐ€๋Šฅ์„ฑ(๊ด€๋ฆฌ์ž๊ฐ€ ๋ณผ ์ˆ˜ ์žˆ๊ฑฐ๋‚˜ ์ˆ˜์ง‘ํ•˜๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ์–ด๋ ค์›€) - ์ด๋ฅผ ๊ณ ๋ คํ•ด์•ผ ํ•˜๋ฉฐ ์›์น™์ ์œผ๋กœ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ์ ์ ˆํ•œ ์‹œ๊ฐ„ ๋‚ด์— ์ˆ˜์ง‘๋  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.
  • ๋„คํŠธ์›Œํฌ ์˜ค๋ฅ˜: ๋„คํŠธ์›Œํ‚น์€ ๊ณ ํ†ต์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.
  • ์ด๊ฒƒ์€ ์‚ด์•„์žˆ๋Š” ์‹ค์ œ ๋ฐ์ดํ„ฐ์ด๋ฉฐ ๊ฒฐ์ฝ” ์ˆœ์ˆ˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฌผ๋ก  ์ด๋Ÿฌํ•œ ๋‰˜์•™์Šค๋ฅผ ๊ฐœ๋ฐœ์— ํฌํ•จ์‹œํ‚ค๋Š” ๊ฒƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ์ฒด์ ์ธ ์‹œ๊ฐ„/์š”์ผ์€ ๊ฐœ๋ฐœ ๊ฒฝํ—˜์ด๋‚˜ ์œ ์‚ฌํ•œ ์ž‘์—…์— ๋Œ€ํ•œ ๊ฒฝํ—˜์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์—ฌ๊ธฐ์„œ๋Š” ์ž‘์—…์ด ์ˆœ์ „ํžˆ ์—”์ง€๋‹ˆ์–ด๋ง์ด๋ฉฐ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€์ ์ธ ์‹ ์ฒด ์›€์ง์ž„์ด ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด ๋งค์šฐ ์ž˜ ํ‰๊ฐ€๋˜๊ณ , ์˜ˆ์•ฝ๋˜๊ณ  ์™„๋ฃŒ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Habr ์„น์…˜ ๋น„๊ต

Habr์˜ ์Šค๋ ˆ๋“œ ๋ฐ/๋˜๋Š” ์„น์…˜์„ ๋น„๊ตํ•˜๋Š” ๋ณด๋‹ค ํฅ๋ฏธ๋กญ๊ณ  ์ค‘์š”ํ•˜์ง€ ์•Š์€ ์‚ฌ๋ก€๋กœ ๋„˜์–ด๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ณต์žก์„ฑ ์ฒดํฌ๋ฆฌ์ŠคํŠธ๋ฅผ ํ™•์ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ๊ฐ ์š”์ ์„ ์ดํ•ดํ•˜๋ ค๋ฉด ์ž‘์—… ์ž์ฒด๋ฅผ ์กฐ๊ธˆ ๋” ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ณ  ์‹คํ—˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์ฒ˜์Œ์—๋Š” API๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ, ์˜ˆ, Habr์—๋Š” API๊ฐ€ ์žˆ์ง€๋งŒ ์‚ฌ์šฉ์ž๊ฐ€ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค(๋˜๋Š” ์ „ํ˜€ ์ž‘๋™ํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค).
  • ๊ทธ๋Ÿฐ ๋‹ค์Œ html - "๊ฐ€์ ธ์˜ค๊ธฐ ์š”์ฒญ" ๊ตฌ๋ฌธ ๋ถ„์„์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๋ฌด์—‡์ด ์ž˜๋ชป๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
  • ์–ด์จŒ๋“  ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๊ฐ€์žฅ ๊ฐ„๋‹จํ•˜๊ณ  ๊ฐ€์žฅ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์ ‘๊ทผ ๋ฐฉ์‹์€ ID๋ฅผ ๋ฐ˜๋ณตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐ€์žฅ ํšจ์œจ์ ์ด์ง€ ์•Š์œผ๋ฉฐ ๋‹ค์–‘ํ•œ ๊ฒฝ์šฐ๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜์„ธ์š”. ๋‹ค์Œ์€ ๋ชจ๋“  ๊ธฐ์กด ID ์ค‘์—์„œ ์‹ค์ œ ID์˜ ๋ฐ€๋„์— ๋Œ€ํ•œ ์˜ˆ์ž…๋‹ˆ๋‹ค.

    ๋ฐ์ดํ„ฐ ๊ณผํ•™์— ๋ฌด์—‡์ด ์ž˜๋ชป๋  ์ˆ˜ ์žˆ๋‚˜์š”? ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘
    ์—์„œ ๊ฐ€์ ธ์˜จ ์ด ๊ธฐ์‚ฌ.

  • ์›น ์œ„์— HTML๋กœ ์‹ธ์ธ ์›์‹œ ๋ฐ์ดํ„ฐ๋Š” ๊ณ ํ†ต์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ธฐ์‚ฌ์˜ ํ‰๊ฐ€๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ  ์ €์žฅํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. HTML์—์„œ ์ ์ˆ˜๋ฅผ ๋–ผ์–ด๋‚ด๊ณ  ์ถ”๊ฐ€ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด ์ˆซ์ž๋กœ ์ €์žฅํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. 

    1) int(score)์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. Habrรฉ์—๋Š” "-5" ์ค„๊ณผ ๊ฐ™์ด ๋งˆ์ด๋„ˆ์Šค๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ๋งˆ์ด๋„ˆ์Šค ๊ธฐํ˜ธ๊ฐ€ ์•„๋‹Œ ์—” ๋Œ€์‹œ์ž…๋‹ˆ๋‹ค(์˜ˆ๊ธฐ์น˜ ์•Š๊ฒŒ ๊ทธ๋ ‡์ฃ ?). ์–ด๋–ค ์‹œ์ ์—์„œ๋Š” ๊ทธ๋Ÿฐ ๋”์ฐํ•œ ์ˆ˜์ •์œผ๋กœ ํŒŒ์„œ์— ์ƒ๋ช…์„ ๋ถˆ์–ด๋„ฃ์–ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

    try:
          score_txt = post.find(class_="score").text.replace(u"โ€“","-").replace(u"+","+")
          score = int(score_txt)
          if check_date(date):
            post_score += score
    

    ๋‚ ์งœ, ํ”Œ๋Ÿฌ์Šค ๋ฐ ๋งˆ์ด๋„ˆ์Šค๊ฐ€ ์ „ํ˜€ ์—†์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์œ„์˜ check_date ํ•จ์ˆ˜์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค).

    2) ์ด์Šค์ผ€์ดํ”„๋˜์ง€ ์•Š์€ ํŠน์ˆ˜ ๋ฌธ์ž - ํŠน์ˆ˜ ๋ฌธ์ž๊ฐ€ ์˜ฌ ๊ฒƒ์ด๋ฏ€๋กœ ์ค€๋น„๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

    3) ํฌ์ŠคํŠธ์˜ ์ข…๋ฅ˜์— ๋”ฐ๋ผ ๊ตฌ์กฐ๊ฐ€ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

    4) ์ด์ „ ๊ฒŒ์‹œ๋ฌผ์€ **์ด์ƒํ•œ ๊ตฌ์กฐ**๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ธฐ๋ณธ์ ์œผ๋กœ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ ๋ฐ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์ผ๊ณผ ๋ฐœ์ƒํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋Š” ์ผ์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋ฉฐ ๋ฌด์—‡์ด ์ž˜๋ชป๋ ์ง€, ๊ตฌ์กฐ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ ์ง€, ๋ฌด์—‡์ด ์–ด๋””์„œ ๋–จ์–ด์งˆ์ง€ ํ™•์‹คํžˆ ์˜ˆ์ธกํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‹จ์ง€ ์‹œ๋„ํ•˜๊ณ  ๊ณ ๋ คํ•ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํŒŒ์„œ๊ฐ€ ๋˜์ง€๋Š” ์˜ค๋ฅ˜.
  • ๊ทธ๋Ÿฐ ๋‹ค์Œ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ์—์„œ ๊ตฌ๋ฌธ ๋ถ„์„ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ซ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ์—์„œ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๋Š” ๋ฐ 30์‹œ๊ฐ„ ์ด์ƒ์ด ์†Œ์š”๋ฉ๋‹ˆ๋‹ค(์ด๋Š” ์ˆœ์ „ํžˆ ์ด๋ฏธ ์ž‘๋™ ์ค‘์ธ ๋‹จ์ผ ์Šค๋ ˆ๋“œ ๊ตฌ๋ฌธ ๋ถ„์„๊ธฐ์˜ ์‹คํ–‰ ์‹œ๊ฐ„์ด๋ฉฐ, ์ž ์ž๊ธฐ ์ƒํƒœ์ด๋ฉฐ ์–ด๋–ค ๊ธˆ์ง€์—๋„ ํ•ด๋‹น๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค). ์•ˆ์— ์ด ๊ธฐ์‚ฌ์—์„œ ์ด๋Š” ์–ด๋Š ์‹œ์ ์—์„œ ์œ ์‚ฌํ•œ ๊ณ„ํš์œผ๋กœ ์ด์–ด์กŒ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ๊ณผํ•™์— ๋ฌด์—‡์ด ์ž˜๋ชป๋  ์ˆ˜ ์žˆ๋‚˜์š”? ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘

๋ณต์žก์„ฑ๋ณ„ ์ „์ฒด ์ฒดํฌ๋ฆฌ์ŠคํŠธ:

  • ๋„คํŠธ์›Œํฌ ์ž‘์—… ๋ฐ HTML ๊ตฌ๋ฌธ ๋ถ„์„์„ ๋ฐ˜๋ณตํ•˜๊ณ  ID๋กœ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.
  • ์ด๊ธฐ์ข… ๊ตฌ์กฐ์˜ ๋ฌธ์„œ.
  • ์ฝ”๋“œ๊ฐ€ ์‰ฝ๊ฒŒ ๋น ์งˆ ์ˆ˜ ์žˆ๋Š” ๊ณณ์ด ๋งŽ์Šต๋‹ˆ๋‹ค.
  • ||๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค || ์•”ํ˜ธ.
  • ํ•„์š”ํ•œ ๋ฌธ์„œ, ์ฝ”๋“œ ์˜ˆ์ œ ๋ฐ/๋˜๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ๋ˆ„๋ฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ์ž‘์—…์— ์†Œ์š”๋˜๋Š” ์˜ˆ์ƒ ์‹œ๊ฐ„์€ Reddit์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๋Š” ๋ฐ ์†Œ์š”๋˜๋Š” ์‹œ๊ฐ„๋ณด๋‹ค 3~5๋ฐฐ ๋” ๊ธธ์–ด์ง‘๋‹ˆ๋‹ค.

Odnoklassniki ๊ทธ๋ฃน์˜ ๋น„๊ต

์„ค๋ช…๋œ ๊ธฐ์ˆ ์ ์œผ๋กœ ๊ฐ€์žฅ ํฅ๋ฏธ๋กœ์šด ์‚ฌ๋ก€๋กœ ๋„˜์–ด๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‚˜์—๊ฒŒ๋Š” ๊ทธ๊ฒƒ์ด ํฅ๋ฏธ๋กœ์› ๋Š”๋ฐ, ์–ธ๋œป ๋ณด๋ฉด ๊ฝค ์‚ฌ์†Œํ•ด ๋ณด์ด์ง€๋งŒ ๋ง‰๋Œ€๊ธฐ๋ฅผ ์ฐŒ๋ฅด๋Š” ์ˆœ๊ฐ„ ์ „ํ˜€ ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์ด ๋ฐํ˜€์กŒ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๋‚œ์ด๋„ ์ฒดํฌ๋ฆฌ์ŠคํŠธ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ๊ทธ ์ค‘ ๋งŽ์€ ์ฒดํฌ๋ฆฌ์ŠคํŠธ๊ฐ€ ์ฒ˜์Œ์— ๋ณด์•˜๋˜ ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋” ์–ด๋ ค์šธ ๊ฒƒ์ด๋ผ๋Š” ์ ์„ ์•Œ์•„๋‘์„ธ์š”.

  • API๊ฐ€ ์žˆ์ง€๋งŒ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์ด ๊ฑฐ์˜ ์™„์ „ํžˆ ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค.
  • ํŠน์ • ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด์„œ๋Š” ๋ฉ”์ผ๋กœ ์•ก์„ธ์Šค๋ฅผ ์š”์ฒญํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์•ก์„ธ์Šค ๊ถŒํ•œ ๋ถ€์—ฌ๊ฐ€ ์ฆ‰์‹œ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๊ทธ๊ฒƒ์€ ๋”์ฐํ•˜๊ฒŒ ๋ฌธ์„œํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค (์ฒ˜์Œ์—๋Š” ๋Ÿฌ์‹œ์•„์–ด์™€ ์˜์–ด ์šฉ์–ด๊ฐ€ ๋ชจ๋“  ๊ณณ์—์„œ ์„ž์—ฌ ์žˆ๊ณ  ์™„์ „ํžˆ ์ผ๊ด€์„ฑ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋•Œ๋กœ๋Š” ์–ด๋”˜๊ฐ€์—์„œ ์›ํ•˜๋Š” ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€ ์ถ”์ธกํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค). ๋˜ํ•œ ๋””์ž์ธ์€ ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฐ์ดํ„ฐ๋ฅผ ์–ป๋Š” ๋ฐ ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. , ์šฐ๋ฆฌ์—๊ฒŒ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ.
  • ๋ฌธ์„œ์—๋Š” ์„ธ์…˜์ด ํ•„์š”ํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  API ๋ชจ๋“œ์˜ ๋ชจ๋“  ๋ณต์žก์„ฑ์„ ์ดํ•ดํ•˜๊ณ  ๋ฌด์–ธ๊ฐ€๊ฐ€ ์ž‘๋™ํ•  ๊ฒƒ์ด๋ผ๊ณ  ๊ธฐ๋Œ€ํ•˜๋Š” ๊ฒƒ ์™ธ์—๋Š” ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค.
  • ์‚ฌ๋ก€๋„ ์—†๊ณ  ์ปค๋ฎค๋‹ˆํ‹ฐ๋„ ์—†์œผ๋ฉฐ ์ •๋ณด ์ˆ˜์ง‘์— ์žˆ์–ด ์œ ์ผํ•œ ์ง€์› ์ง€์ ์€ ์†Œ๊ทœ๋ชจ์ž…๋‹ˆ๋‹ค. ์‹ธ๊ฐœ Python์—์„œ(์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ๋งŽ์ง€ ์•Š์Œ)
  • ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ์ค‘ ๋งŽ์€ ๋ถ€๋ถ„์ด ์ž ๊ฒจ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— Selenium์ด ๊ฐ€์žฅ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์˜ต์…˜์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
    1) ์ฆ‰, ๊ฐ€์ƒ์˜ ์‚ฌ์šฉ์ž(๋ฐ ์ง์ ‘ ๋“ฑ๋ก)๋ฅผ ํ†ตํ•ด ์ธ์ฆ์ด ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

    2) ๊ทธ๋Ÿฌ๋‚˜ Selenium์„ ์‚ฌ์šฉํ•˜๋ฉด ์ •ํ™•ํ•˜๊ณ  ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ์ž‘์—…์ด ๋ณด์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์ ์–ด๋„ ok.ru์˜ ๊ฒฝ์šฐ ํ™•์‹คํžˆ).

    3) Ok.ru ์›น์‚ฌ์ดํŠธ์—๋Š” JavaScript ์˜ค๋ฅ˜๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ ๋•Œ๋•Œ๋กœ ์ด์ƒํ•˜๊ณ  ์ผ๊ด€๋˜์ง€ ์•Š๊ฒŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

    4) ํŽ˜์ด์ง€ ๋งค๊น€, ์š”์†Œ ๋กœ๋“œ ๋“ฑ์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    5) ๋ž˜ํผ๊ฐ€ ์ œ๊ณตํ•˜๋Š” API ์˜ค๋ฅ˜๋Š” ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์–ด์ƒ‰ํ•˜๊ฒŒ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์‹คํ—˜ ์ฝ”๋“œ ์กฐ๊ฐ).

    def get_comments(args, context, discussions):
        pause = 1
        if args.extract_comments:
            all_comments = set()
    #makes sense to keep track of already processed discussions
            for discussion in tqdm(discussions): 
                try:
                    comments = get_comments_from_discussion_via_api(context, discussion)
                except odnoklassniki.api.OdnoklassnikiError as e:
                    if "NOT_FOUND" in str(e):
                        comments = set()
                    else:
                        print(e)
                        bp()
                        pass
                all_comments |= comments
                time.sleep(pause)
            return all_comments
    

    ๋‚ด๊ฐ€ ๊ฐ€์žฅ ์ข‹์•„ํ•˜๋Š” ์‹ค์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    OdnoklassnikiError("Error(code: 'None', description: 'HTTP error', method: 'discussions.getComments', params: โ€ฆ)โ€)

    6) ๊ถ๊ทน์ ์œผ๋กœ Selenium + API๊ฐ€ ๊ฐ€์žฅ ํ•ฉ๋ฆฌ์ ์ธ ์˜ต์…˜์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

  • ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜๊ณ  ์‹œ์Šคํ…œ์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด์•ผ ํ•˜๋ฉฐ ์‚ฌ์ดํŠธ์˜ ์ผ๊ด€๋˜์ง€ ์•Š์€ ๋™์ž‘์„ ํฌํ•จํ•˜์—ฌ ๋งŽ์€ ์˜ค๋ฅ˜๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋ฉฐ ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜๋Š” ์ƒ์ƒํ•˜๊ธฐ๊ฐ€ ๋งค์šฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค(๋ฌผ๋ก  ์ „๋ฌธ์ ์œผ๋กœ ํŒŒ์„œ๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š๋Š” ํ•œ).

์ด ์ž‘์—…์˜ ์กฐ๊ฑด๋ถ€ ์˜ˆ์ƒ ์‹œ๊ฐ„์€ Habr์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•  ๋•Œ๋ณด๋‹ค 3~5๋ฐฐ ๋” ๋†’์Šต๋‹ˆ๋‹ค. Habr์˜ ๊ฒฝ์šฐ HTML ๊ตฌ๋ฌธ ๋ถ„์„๊ณผ ํ•จ๊ป˜ ์ •๋ฉด ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ณ  OK์˜ ๊ฒฝ์šฐ ์ค‘์š”ํ•œ ์œ„์น˜์—์„œ API๋กœ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ .

์กฐ์‚ฌ ๊ฒฐ๊ณผ

๋ฐฉ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ํŒŒ์ดํ”„๋ผ์ธ ๋ชจ๋“ˆ์˜ "ํ˜„์žฅ"(์˜ค๋Š˜ ๊ณ„ํš ์ค‘์ž…๋‹ˆ๋‹ค!) ๊ธฐํ•œ์„ ์–ผ๋งˆ๋‚˜ ์˜ˆ์ธกํ•ด์•ผ ํ•˜๋Š”์ง€์— ๊ด€๊ณ„์—†์ด, ์ž‘์—… ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ถ„์„ํ•˜์ง€ ์•Š๊ณ ๋Š” ์‹คํ–‰ ์‹œ๊ฐ„์„ ์ •์„ฑ์ ์œผ๋กœ ์˜ˆ์ธกํ•˜๋Š” ๊ฒƒ์ด ๊ฑฐ์˜ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ข€ ๋” ์ฒ ํ•™์ ์œผ๋กœ ๋งํ•˜๋ฉด ๋ฏผ์ฒฉํ•œ ์ถ”์ • ์ „๋žต์€ ์—”์ง€๋‹ˆ์–ด๋ง ์ž‘์—…์— ์ ํ•ฉํ•˜์ง€๋งŒ ๋” ์‹คํ—˜์ ์ด๊ณ  ์–ด๋–ค ์˜๋ฏธ์—์„œ "์ฐฝ์˜์ "์ด๊ณ  ํƒ๊ตฌ์ ์ธ ๋ฌธ์ œ, ์ฆ‰ ์˜ˆ์ธก ๊ฐ€๋Šฅ์„ฑ์ด ๋‚ฎ์€ ๋ฌธ์ œ๋Š” ์œ ์‚ฌํ•œ ์ฃผ์ œ์˜ ์˜ˆ์—์„œ์™€ ๊ฐ™์ด ์–ด๋ ค์›€์„ ๊ฒช์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์—ฌ๊ธฐ์„œ ๋…ผ์˜ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฌผ๋ก  ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘์€ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฏฟ์„ ์ˆ˜ ์—†์„ ์ •๋„๋กœ ๊ฐ„๋‹จํ•˜๊ณ  ๊ธฐ์ˆ ์ ์œผ๋กœ ๋ณต์žกํ•˜์ง€ ์•Š์€ ์ž‘์—…์ด๋ฉฐ, ์•…๋งˆ๋Š” ์„ธ๋ถ€ ์‚ฌํ•ญ์— ์ˆจ์–ด ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ •ํ™•ํžˆ ์ด ์ž‘์—…์„ ํ†ตํ•ด ๋ฌด์—‡์ด ์ž˜๋ชป๋  ์ˆ˜ ์žˆ๋Š”์ง€, ์ž‘์—…์— ์†Œ์š”๋˜๋Š” ์‹œ๊ฐ„์ด ์ •ํ™•ํžˆ ์–ผ๋งˆ๋‚˜ ๋˜๋Š”์ง€์— ๋Œ€ํ•œ ๊ฐ€๋Šฅํ•œ ์˜ต์…˜์˜ ์ „์ฒด ๋ฒ”์œ„๋ฅผ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถ”๊ฐ€ ์‹คํ—˜ ์—†์ด ์ž‘์—…์˜ ํŠน์„ฑ์„ ์‚ดํŽด๋ณด๋ฉด Reddit๊ณผ OK๊ฐ€ ๋น„์Šทํ•ด ๋ณด์ž…๋‹ˆ๋‹ค. API, Python ๋ž˜ํผ๊ฐ€ ์žˆ์ง€๋งŒ ๋ณธ์งˆ์ ์œผ๋กœ ์ฐจ์ด๊ฐ€ ํฝ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ํŒ๋‹จํ•˜๋ฉด Habr์˜ ๋ถ„์„์€ OK๋ณด๋‹ค ๋” ๋ณต์žกํ•ด ๋ณด์ด์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ์ •๋ฐ˜๋Œ€์ด๋ฉฐ ์ด๋Š” ๋ฌธ์ œ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ„๋‹จํ•œ ์‹คํ—˜์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ์ •ํ™•ํžˆ ์•Œ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚ด ๊ฒฝํ—˜์ƒ ๊ฐ€์žฅ ํšจ๊ณผ์ ์ธ ์ ‘๊ทผ ๋ฐฉ์‹์€ ์˜ˆ๋น„ ๋ถ„์„ ์ž์ฒด์™€ ๊ฐ„๋‹จํ•œ ์ฒซ ๋ฒˆ์งธ ์‹คํ—˜์— ํ•„์š”ํ•œ ์‹œ๊ฐ„์„ ๋Œ€๋žต์ ์œผ๋กœ ์ถ”์ •ํ•˜๊ณ  ๋ฌธ์„œ๋ฅผ ์ฝ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ „์ฒด ์ž‘์—…์— ๋Œ€ํ•œ ์ •ํ™•ํ•œ ์ถ”์ •์น˜๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์• ์ž์ผ ๋ฐฉ๋ฒ•๋ก ๊ณผ ๊ด€๋ จํ•˜์—ฌ "์ž‘์—… ๋งค๊ฐœ๋ณ€์ˆ˜ ์ถ”์ •" ํ‹ฐ์ผ“์„ ์ƒ์„ฑํ•ด ์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ "์Šคํ”„๋ฆฐํŠธ" ๋‚ด์—์„œ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—…์„ ํ‰๊ฐ€ํ•˜๊ณ  ๊ฐ๊ฐ์— ๋Œ€ํ•ด ๋ณด๋‹ค ์ •ํ™•ํ•œ ์ถ”์ •์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ.

๋”ฐ๋ผ์„œ ๊ฐ€์žฅ ํšจ๊ณผ์ ์ธ ์ฃผ์žฅ์€ "๋น„๊ธฐ์ˆ ์ " ์ „๋ฌธ๊ฐ€์—๊ฒŒ ์•„์ง ํ‰๊ฐ€๋˜์ง€ ์•Š์€ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋”ฐ๋ผ ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์‹œ๊ฐ„๊ณผ ์ž์›์ด ๋‹ฌ๋ผ์งˆ ๊ฒƒ์ธ์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ์ฃผ์žฅ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ๊ณผํ•™์— ๋ฌด์—‡์ด ์ž˜๋ชป๋  ์ˆ˜ ์žˆ๋‚˜์š”? ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€