shlewislee.me

πŸ“š 학ꡐ λ„μ„œκ΄€ μ’Œμ„μ΄μš© ν¬λ‘€λ§ν•˜κΈ°(with python)

μ‹œν—˜κΈ°κ°„μ— 학ꡐ λ„μ„œκ΄€μ„ 자주 κ°€κ²Œλ˜μ—ˆλŠ”λ°, μ—¬λŸ¬ μžλ¦¬κ°€ μžˆμ§€λ§Œ 개인적으둜 μ’‹μ•„ν•˜λŠ” 자리의 λͺ‡κ°€μ§€ 쑰건이 μžˆμ—ˆλ‹€.

  1. 주변에 μ‚¬λžŒμ΄ μ—†κ±°λ‚˜ μ΅œλŒ€ν•œ 적을 것. λ°”λ‘œ μ˜†μ— μ•‰λŠ” 것은 μ΅œλŒ€ν•œ ν”Όν•  것
  2. μž…κ΅¬μ™€ λ„ˆλ¬΄ 가깝지 μ•ŠμœΌλ©΄μ„œλ„ λ“œλ‚˜λ“€κΈ° μ‰¬μšΈ 것
  3. 벽면을 λ°”λΌλ³΄λŠ” μžλ¦¬λŠ” ν”Όν•  것

μ΄λ ‡κ²Œν•˜λ‹€λ³΄λ‹ˆ λͺ‡λͺ‡ 번호λ₯Ό μ„ ν˜Έν•˜κ²Œλ˜μ—ˆλŠ”λ°, κ·Έλ ‡κ²Œ μ„ ν˜Έν•˜λŠ” 번호 쀑 μ–΄λŠκ³³μ΄ 주변에 μ‚¬λžŒμ΄ 올 ν™•λ₯ μ΄ κ°€μž₯ μ μ„κΉŒ? ν˜Ήμ€ 쀑간에 μ‚¬λžŒμ΄ λΉ„κ²Œ 될 ν™•λ₯ μ΄ κ°€μž₯ λ†’μ„κΉŒ? λ₯Ό κ³ λ―Όν•˜κ²Œ λ˜μ—ˆλ‹€. λ¬Όλ‘  μ—¬λŸ¬ ν™˜κ²½μ μΈ μš”μΈμ— μ˜ν•΄ λ³€ν•˜κ² μ§€λ§Œ, λ§Žμ€ 데이터λ₯Ό μΆ•μ ν•˜κ³ λ‚˜λ©΄ λΆ„λͺ… μœ μ˜λ―Έν•œ 정보λ₯Ό 얻을 수 μžˆμ„ 것 κ°™μ•˜λ‹€.

λ¨Όμ € κ³ λ―Όν•œ 것은 μ–΄λ–»κ²Œ 자리의 ν˜„ μƒνƒœλ₯Ό 크둀링 ν•  수 μžˆμ„κΉŒμ˜€λ‹€. 적어도 λ‚΄κ°€ μ•„λŠ” ν•œ, μ’Œμ„μ˜ˆμ•½μ€ 1) νœ΄λŒ€ν° μ•±, 2) λ„μ„œκ΄€ λ‚΄ κΈ°κΈ° 둜만 κ°€λŠ₯ν•˜λ‹€. λ„μ„œκ΄€ λ‚΄ κΈ°κΈ°λŠ” μ˜μ—­ λ°–μ΄λ―€λ‘œ νœ΄λŒ€ν° 앱을 μ‚΄νŽ΄λ³΄μ•˜λ‹€. 짧은 νŒ¨ν‚· 뢄석을 톡해 μ–΄λ ΅μ§€ μ•Šκ²Œ ν˜„ν™©μ„ ν‘œμ‹œν•΄μ£ΌλŠ” μ›ΉνŽ˜μ΄μ§€λ₯Ό μ–»μ–΄ λ‚Ό 수 μžˆμ—ˆλ‹€. ν•΄λ‹Ή νŽ˜μ΄μ§€λŠ” JSON같은 κ°„νŽΈν•œ 방법이 μ•„λ‹Œ Javascript둜 css classλ₯Ό 첫 Request이후에 λ³€κ²½ν•¨μœΌλ‘œμ„œ μ’Œμ„μ΄μš©ν˜„ν™©μ„ λ‚˜νƒ€λƒˆλŠ”λ°, ν•΄λ‹Ή JS μ½”λ“œμ— κ°„λ‹¨ν•œ Regexλ₯Ό μ‚¬μš©ν•΄ ν˜„ν™©μ„ 읽어 λ‚Ό 수 μžˆμ—ˆλ‹€.

λ„μ„œκ΄€ μ’Œμ„ ν˜„ν™©

생각보닀 크둀링이 간단해 처음 μ½”λ”© λ‹¨κ³„μ—μ„œ 어렀움은 μ—†μ—ˆλ‹€. 였히렀 어렀움은 이후에 μ§€μ†μ μœΌλ‘œ 크둀링을 μ–΄λ–»κ²Œ ν•  κ²ƒμΈκ°€μ—μ„œ λ°œμƒν–ˆλŠ”λ°, Dockerλ₯Ό μ‚¬μš©ν•΄ 크둀링을 해보렀 ν–ˆμ§€λ§Œ volume binding에 μ—¬λŸ¬ 어렀움을 κ²ͺλ‹€κ°€ κ²°κ΅­ λ‹€λ₯Έ μ„œλ²„μ— κ°„λ‹¨ν•œ cron을 μ‚¬μš©ν•˜κΈ°λ‘œ κ²°μ‹¬ν–ˆλ‹€. 결과물은 λ§€ μ‹œ 00λΆ„κ³Ό 30뢄에 크둀링을 ν•˜λ„λ‘ μ„€μ •ν•˜μ˜€κ³ , 잘 μž‘λ™ν•œλ‹€.

λ°©ν•™κΈ°κ°„μΈλ§ŒνΌ, μ§€κΈˆ μŒ“μ΄λŠ” λ°μ΄ν„°λŠ” 방학기간에 κ΅­ν•œλ˜λŠ” 데이터닀. 수 κ°œμ›” 크둀링을 ν•˜κ³ λ‚˜λ©΄ μœ μ˜λ―Έν•œ κ²°κ³Όλ₯Ό κΈ°λŒ€ν•΄λ„ 쒋을 것 κ°™λ‹€.

cronjob

Source code at Github Gist

Reply to this post by email β†ͺ