jobsonar / README.md
MiniMing
fix: restore HF Spaces frontmatter in README
f4f6e3a
metadata
title: JobSonar
emoji: ๐Ÿ“ก
colorFrom: blue
colorTo: indigo
sdk: docker
pinned: false

JobSonar

๋‹ค์–‘ํ•œ ์ทจ์—… ํ”Œ๋žซํผ์— ์˜ฌ๋ผ์˜ค๋Š” ๋ฐ์ดํ„ฐ ๊ด€๋ จ ์ง๊ตฐ์˜ ๊ณต๊ณ ๋“ค์„ ๋ชจ์•„์„œ ๋ณด์—ฌ์ฃผ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

JobSonar

์ฃผ์š” ๊ธฐ๋Šฅ

ํƒญ ๋‚ด์šฉ
๊ณต๊ณ  ๋ชฉ๋ก ํ‚ค์›Œ๋“œยท์ง€์—ญยท๊ฒฝ๋ ฅยท๊ทผ๋ฌดํ˜•ํƒœ ํ•„ํ„ฐ, ์›๋ณธ ๋งํฌ
ํŠธ๋ Œ๋“œ ์ฃผ๋ณ„ ๊ณต๊ณ  ์ˆ˜ ์ถ”์ด, ์Šคํ‚ฌ ํŠธ๋ Œ๋“œ, ๊ฒฝ๋ ฅ ์š”๊ฑด ๋ถ„ํฌ
๊ธฐ์ˆ  ์Šคํƒ ์ง๊ตฐ๋ณ„ TOP ์Šคํ‚ฌ, ์ตœ๊ทผ 2์ฃผ ๊ธ‰์ƒ์Šน ์Šคํ‚ฌ
์Šคํ‚ฌ ๋„คํŠธ์›Œํฌ ๊ณต๋™ ์ถœํ˜„ ๊ธฐ๋ฐ˜ ๊ธฐ์ˆ  ์—ฐ๊ฒฐ ๊ทธ๋ž˜ํ”„
์—ฐ๋ด‰ ๋ถ„์„ ์ง๊ตฐ๋ณ„ ๋ฐ•์Šคํ”Œ๋กฏยทํ†ต๊ณ„ยทํžˆ์Šคํ† ๊ทธ๋žจ
๊ธฐ์—… ๋ถ„์„ ์ฑ„์šฉ TOP ๊ธฐ์—…, ์ง€์—ญ๋ณ„ยท์ง๊ตฐร—์ง€์—ญ ํžˆํŠธ๋งต

๊ธฐ์ˆ  ์Šคํƒ

  • ์ˆ˜์ง‘: Python, requests, BeautifulSoup
  • ์ €์žฅ: SQLite
  • ๋ถ„์„: pandas, networkx
  • ์‹œ๊ฐํ™”: Plotly, Dash
  • ์ž๋™ํ™”: GitHub Actions (๋งค์ผ ์˜ค์ „ 10์‹œ KST)
  • ๋ฐฐํฌ: Hugging Face Spaces (Docker)

๊ตฌ์กฐ

GitHub Actions (๋งค์ผ ์˜ค์ „ 10์‹œ)
  โ”œโ”€ ์›ํ‹ฐ๋“œ ๊ณต๊ฐœ REST API ์ˆ˜์ง‘
  โ”œโ”€ ์‚ฌ๋žŒ์ธ HTML ํŒŒ์‹ฑ (๋ชฉ๋ก ํŽ˜์ด์ง€๋งŒ, robots.txt ์ค€์ˆ˜)
  โ”œโ”€ ์žก์ฝ”๋ฆฌ์•„ HTML ํŒŒ์‹ฑ
  โ”œโ”€ SQLite DB ์—…๋ฐ์ดํŠธ (upsert, ์ค‘๋ณต ๊ณต๊ณ  ์ฒ˜๋ฆฌ)
  โ””โ”€ HF Dataset(mininiming/jobsonar-data)์— DB ์—…๋กœ๋“œ

HF Space ์•ฑ ์‹œ์ž‘ ์‹œ
  โ”œโ”€ HF Dataset์—์„œ jobsonar.db ๋‹ค์šด๋กœ๋“œ
  โ””โ”€ Dash ๋Œ€์‹œ๋ณด๋“œ ๋ Œ๋”๋ง

๋กœ์ปฌ

pip install -r requirements.txt

# ํฌ๋กค๋ง ํ…Œ์ŠคํŠธ (์›ํ‹ฐ๋“œ 3ํŽ˜์ด์ง€)
python -m crawler.run --source wanted --max-pages 3

# ๋Œ€์‹œ๋ณด๋“œ ์‹คํ–‰
python dashboard/app.py
# โ†’ http://localhost:8050

์ˆ˜์ง‘ ๋Œ€์ƒ

  • ๋ฐ์ดํ„ฐ ์—”์ง€๋‹ˆ์–ด
  • ๋ฐ์ดํ„ฐ ๋ถ„์„๊ฐ€
  • ๋ฐ์ดํ„ฐ ์‚ฌ์ด์–ธํ‹ฐ์ŠคํŠธ
  • ML ์—”์ง€๋‹ˆ์–ด

ํ”Œ๋ ›ํผ ๋ณ„ ์ •์ฑ…

์‚ฌ์ดํŠธ ๋ฐฉ์‹ robots.txt
์›ํ‹ฐ๋“œ ๊ณต๊ฐœ REST API ๋ฌธ์ œ ์—†์Œ
์‚ฌ๋žŒ์ธ ๋ชฉ๋ก ํŽ˜์ด์ง€ HTML ์ƒ์„ธ ํŽ˜์ด์ง€ Disallow โ†’ relay URL ์‚ฌ์šฉ
์žก์ฝ”๋ฆฌ์•„ ๋ชฉ๋ก ํŽ˜์ด์ง€ HTML ํ—ˆ์šฉ ํ™•์ธ

์š”์ฒญ ๊ฐ„ 1.5~4์ดˆ ๋”œ๋ ˆ์ด ์ ์šฉ.