Joylish / wanted-crawler

๐ŸŒ ์›ํ‹ฐ๋“œ ์ฑ„์šฉ๊ณต๊ณ  ์›น์Šคํฌ๋žฉํ•‘์ž…๋‹ˆ๋‹ค.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Wanted Job:heart:

์›ํ‹ฐ๋“œ ๊ฐœ๋ฐœ ์ง๊ตฐ ์ฑ„์šฉ๊ณต๊ณ  ์›น์Šคํฌ๋ž˜ํ•‘

์–ธ์–ด

  • Python 3.6 v
  • DB ์„œ๋ฒ„ ํ™˜๊ฒฝ Ubuntu

์‚ฌ์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ ๋ฆฌ์†Œ์Šค

  • requests
  • selenium
  • beautifulsoup
  • multiprocessing
  • itertools
  • re
  • json
  • time, csv
  • chromedriver
  • konlpy-okt
  • nltk

DB ํ™˜๊ฒฝ

  • MongoDB

  • pymongo ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ด์šฉ

  • ์„œ๋ฒ„์— MongoDB ์„ธํŒ…

  • MongoDB ํฌํŠธ ๋ณ€๊ฒฝ

์„ค๋ช…

  1. ๊ฐœ๋ฐœ ์ง๊ตฐ์— ์†ํ•œ ๋ชจ๋“  ์นดํ…Œ๊ณ ๋ฆฌ์˜ 'href' save

https://www.wanted.co.kr/wdlist/518?country=kr&job_sort=job.latest_order&years=-1&locations=all

  • ์ฑ„์šฉ ์ง๊ตฐ : '๊ฐœ๋ฐœ', wdlist/518
  • ์ฑ„์šฉ ๊ตญ๊ฐ€ : 'ํ•œ๊ตญ', country=kr
  • ํ•„ํ„ฐ๋ง job_sort
    1. ์ตœ์‹ ์ˆœ : job.latest_order
    2. ๊ฒฝ๋ ฅ๋ฌด๊ด€(๋ชจ๋‘) : years=-1
    3. ์ „๊ตญ : locations=all
  1. ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ๋ชจ๋“  ์ฑ„์šฉ๊ณต๊ณ ์˜ 'href' save 3๋ฒˆ์—์„œ ๋ฐœ์ƒํ•œ ์˜ค๋ฅ˜๋ฅผ ์žก๊ธฐ ์œ„ํ•ด 1๋ฒˆ์œผ๋กœ ๋‹ค์‹œ ๋Œ์•„๊ฐ€๋Š” ๊ฒƒ์€ ๋น„ํšจ์œจ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์—ฌ ํ•ด๋‹น ํ•ญ๋ชฉ์˜ ์ •๋ณด๋Š” csv ํŒŒ์ผ์— ์ €์žฅํ•ด๋‘์—ˆ๋‹ค.

  2. ์ฑ„์šฉ์ƒ์„ธ์ •๋ณด ํฌ๋กค๋ง ์ฑ„์šฉ์ƒ์„ธ์ •๋ณด๋Š” MongoDB object insert๋ฅผ ๊ณ ๋ คํ•˜์—ฌ json ํ˜•ํƒœ๋กœ RecruitInfo.json์— ์ €์žฅ๋œ๋‹ค. ์ถ”ํ›„ ํ•ด๋‹น์ •๋ณด๋Š” mongo DB์˜ RecruitInfo ์ปฌ๋ ‰์…˜์— ์ €์žฅ๋  ์˜ˆ์ •์ด๋‹ค.

์ฑ„์šฉ์ƒ์„ธ์ •๋ณด ๊ธฐ๋ณธ ํ•ญ๋ชฉ

'id', '์ง๊ตฐ', '์ง€์—ญ', '๊ตญ๊ฐ€', 'ํƒœ๊ทธ', 'ํšŒ์‚ฌ๋ช…', 'ํšŒ์‚ฌ์†Œ๊ฐœ', '์ฃผ์š”์—…๋ฌด', '์ž๊ฒฉ์š”๊ฑด', '์šฐ๋Œ€์‚ฌํ•ญ', 'ํ˜œํƒ ๋ฐ ๋ณต์ง€', '๋งˆ๊ฐ์ผ', '๊ทผ๋ฌด์ง€'

์ •๋ฆฌ ์ž๋ฃŒ

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

๋ฐ์ดํ„ฐ ํฌ๋กค๋ง csv ํŒŒ์ผ ๋ฏธ๋ฆฌ๋ณด๊ธฐ

26

ํšŒ๊ณ 

  1. ์›ํ‹ฐ๋“œ๋Š” ๋™์  ์›น์œผ๋กœ, ํ™”๋ฉด ํฌ๊ธฐ์— ๋”ฐ๋ผ ํƒœ๊ทธ ๊ตฌ์กฐ๊ฐ€ ๋ฐ”๋€Œ๋Š” ๋ถ€๋ถ„์ด ์žˆ๋‹ค. ์ด๋กœ ์ธํ•ด ์‚ฌ์ „์— ๋ถ„์„ํ•œ ํƒœ๊ทธ ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ selenium selector๋กœ element๋ฅผ ์ฐพ์•˜์ง€๋งŒ, selector๊ฐ€ ํ•ด๋‹น element๋ฅผ ์ฐพ์ง€ ๋ชปํ–ˆ๋‹ค. select๋ฅผ ์ž˜๋ชปํ•œ ๊ฒƒ์ธ์ง€, iframe์ด ์žˆ์–ด์„œ ์ฐพ์ง€๋ฅผ ๋ชปํ•˜๋Š” ๊ฑด์ง€ ๋“ฑ ์—ฌ๋Ÿฌ ๊ฐ€์ง€๋ฅผ ์‹œ๋„ํ•ด๋ณด์•˜๋‹ค. web driver์— ํ™”๋ฉด ํฌ๊ธฐ๋ฅผ ๊ณ ์ •ํ•˜๋Š” option์„ ์ฃผ์–ด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

  2. ์ฑ„์šฉ์ƒ์„ธ์ •๋ณด์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง๊ตฐ, ํšŒ์‚ฌ๋ช…, ํšŒ์‚ฌ์†Œ๊ฐœ, ์ฃผ์š”์—…๋ฌด, ์ž๊ฒฉ์š”๊ฑด, ์šฐ๋Œ€์‚ฌํ•ญ, ํ˜œํƒ ๋ฐ ๋ณต์ง€, ๋ชจ์ง‘์ผ, ๊ทผ๋ฌด์ง€๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์–ด๋–ค ์ฑ„์šฉ์ƒ์„ธ์ •๋ณด์—์„œ ๊ธฐ๋ณธ ํ•ญ๋ชฉ์— ๋Œ€์‘๋˜๋Š” ๊ฐ’์ด ์—†์—ˆ๋‹ค. try/expect๋กœ ์—๋Ÿฌ๋ฅผ ErrorHistory.json์— ๊ธฐ๋กํ•˜๊ณ  ํ•ด๋‹น ํ•ญ๋ชฉ์—๋Š” None ๊ฐ’์„ ํ• ๋‹นํ–ˆ๋‹ค.

  3. mecab๊ณผ okt๋ฅผ ๋น„๊ตํ•˜์—ฌ konlpy์˜ open korean text๋กœ ๊ฒฐ์ •ํ•˜์—ฌ ๋ช…์‚ฌ ์ถ”์ถœ์„ ์ง„ํ–‰ํ–ˆ๋‹ค. okt ์‹คํ–‰์‹œ ๊ธฐ์กด jdk๊ฐ€ 32bit๋ผ์„œ interface mismatch ์˜ค๋ฅ˜๊ฐ€ ๋‚ฌ๋‹ค.64bit jdk๋ฅผ ์žฌ์„ค์น˜ํ•ด์„œ ํ•ด๊ฒฐํ–ˆ๋‹ค.

  4. ์ฑ„์šฉ๊ณต๊ณ ์— ์™ธ๋ž˜์–ด๊ฐ€ ๋งŽ์•„์„œ ์ผ์ผ์ด ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•ด์„œ ํ•œ๋•€ํ•œ๋•€ user dictionary, ngram, stopwords์— ์ถ”๊ฐ€ํ•˜์—ฌ ์ ์šฉํ–ˆ๋‹ค.. ์˜์–ด๋„ ์ ์šฉํ•ด๋ด์•ผ๊ฒ ๋‹ค..

About

๐ŸŒ ์›ํ‹ฐ๋“œ ์ฑ„์šฉ๊ณต๊ณ  ์›น์Šคํฌ๋žฉํ•‘์ž…๋‹ˆ๋‹ค.


Languages

Language:Python 100.0%