Skip to main content Link Menu Expand (external link) Document Search Copy Copied

ํ•ด๋‹น ํ”„๋กœ์ ํŠธ๋Š” Pulse ๊ณ„์ ˆ์ธํ„ด ์ค‘, DB ๊ด€์ฐฐ ํˆด ์ œ์ž‘ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.

  • ์ฐธ์—ฌ์ธ์› : 1์ธ ํ”„๋กœ์ ํŠธ
  • ๊ธฐ๊ฐ„ : 2020๋…„ 01์›” ~ 2020๋…„ 02์›”(1๊ฐœ์›”)
  • ๋‚˜์˜ ์—ญํ• 
    • ๐Ÿ“ƒ ์š”๊ตฌ์‚ฌํ•ญ ๋ถ„์„
    • โœ๏ธ DB ํฌ๋กค๋ง ์ œ์ž‘
  • Github : ๋น„๊ณต๊ฐœ

๐Ÿ“ƒ ์š”๊ตฌ์‚ฌํ•ญ ๋ถ„์„

  1. ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ์˜ acc_no๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋ฉด, ํ•ด๋‹น acc_id ๊ฐ€ ์กด์žฌํ•˜๋Š” row ์ „์ฒด๋ฅผ ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์— ๊ฑธ์ณ ๊ฐ€์ ธ์™€์•ผ ํ•œ๋‹ค.
  2. DB ์Šคํ‚ค๋งˆ๋Š” ์ˆ˜์ •ํ•ด์„  ์•ˆ๋œ๋‹ค.
  3. ์นผ๋Ÿผ ์œ„์น˜๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  4. csv ์ €์žฅ ์‹œ ํ†ตํ•ฉ๋œ csv ํŒŒ์ผ๊ณผ ํ…Œ์ด๋ธ” ๋ณ„ ์‹œํŠธ๋กœ ๋‚˜๋‰˜์–ด์ง„ csv ์ €์žฅ ๋‘๊ฐ€์ง€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ด์•ผํ•œ๋‹ค.
  5. ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๋กœ ๋น ๋ฅด๊ฒŒ ์ง„ํ–‰๋˜์–ด์•ผ ํ•œ๋‹ค. ๋‹น์—ฐํžˆ ์ค‘๋ณต์€ ์—†์–ด์•ผ ํ•œ๋‹ค.

โœ๏ธ DB ํฌ๋กค๋ง ์ œ์ž‘

ํฌ๋กค๋Ÿฌ ์ œ์ž‘

1. ํ™˜๊ฒฝ

  • ์ž‘์—… ํ™˜๊ฒฝ : Pycharm(python3.6)
  • ์‚ฌ์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ : selenium(3.141.0v), beautifulsoup4(4.8.2), pyqt5(5.13.0v), pandas(1.0.1v), numpy(1.18.1v), xlsxWriter(1.2.8v), pip(20.0.2v), cx_freeze(6.1v)
  • ํŒŒ์ผ :
    1. extract.py : Login.class = ๋กœ๊ทธ์ธ, Ui_Dialog.class = ๋ฉ”์ธํ™”๋ฉด
    2. crowling.py : crolw(์ฃผ์†Œ,id,pw).class = ํฌ๋กค๋ง
    3. test.py : exportCsv(๋ฌธ์ž์—ด, ๋ชจ๋ธ).class = DB์žฌ์ •๋ ฌ
    • ๋ชจ๋ธ==0: ์‚ฌ๋žŒ ๊ฒ€์ƒ‰ํ•˜์—ฌ Ui_Dialog.class์˜ QTableView์— ์ถœ๋ ฅ
    • ๋ชจ๋ธ==1: ์ „์ฒด excel export
    • ๋ชจ๋ธ==2: ์‚ฌ๋žŒ excel export
    • ๋ชจ๋ธ==3: ์ „์ฒด ๊ฒ€์ƒ‰ํ•˜์—ฌ Ui_Dialog.class์˜ QTableView์— ์ถœ๋ ฅ
      1. setup.py : cx_freeze๋กœ exeํŒŒ์ผ ์ถ”์ถœ.

2. ์™„๋ฃŒ๋œ ๋ชฉ๋ก

1) CSV๋ฐ์ดํ„ฐ ๊นจ์งํ˜„์ƒ ์ˆ˜์ •.

  • txt๋กœ ๋ฐ›์•„์„œ ๋‹ค์‹œ csv๋กœ ์žฌ์ธ์ฝ”๋”ฉ.

2) CSV๋Œ€์‹  excel์‚ฌ์šฉ

  • ํ•œ ๊ฐœ์˜ CSVํŒŒ์ผ์— ์—ฌ๋Ÿฌ๊ฐœ ์‹œํŠธ๊ฐ€ ์žˆ์„ ์ˆ˜ ์—†์Œ์œผ๋กœ, ์šฉ๋Ÿ‰๊ณผ ์‹œ๊ฐ„์ด ์ปค์ง€์ง€๋งŒ xlsxํ™•์žฅ์ž ์‚ฌ์šฉ.
  • xlsx๋กœ ์ „์ฒด ํ…Œ์ด๋ธ” ์ƒ์„ฑ์‹œ๊ฐ„์€ ์•ฝ 3๋ถ„ ์†Œ์š”๋œ๋‹ค.

3) pyqt5์‚ฌ์šฉํ•˜์—ฌ Qtableview์— dataframe์ถœ๋ ฅ.

4) ๊ฒ€์ƒ‰๊ธฐ๋Šฅ ๊ตฌํ˜„.

  • acc_no์— ์ž…๋ ฅ ํ›„ ๊ฒ€์ƒ‰ ์‹œ, ์ „์ฒด ๋ฒ„ํŠผ์ด isClicked()์ผ ๋•Œ ๋ชจ๋‘ ํ‘œ์‹œ, ์•„๋‹ ๋•Œ acc_no๊ฐ€ ๋งž๋Š” ์‚ฌ๋žŒ๋งŒ ํ‘œ์‹œ.

5) csv์ €์žฅ ๊ธฐ๋Šฅ ๊ตฌํ˜„.

  • ์ „์ฒด ๋ฒ„ํŠผ์ด isClicked()์ผ ๋•Œ, _user_all.xlsxํŒŒ์ผ์— ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€.
  • ์ „์ฒด ๋ฒ„ํŠผ์ด ๊บผ์ ธ์žˆ๊ณ  acc_no์˜ ๊ฐ’์ด ์ž…๋ ฅ๋˜์–ด ์žˆ์„ ๋•Œ, acc_no + โ€œ_โ€ + ํ…Œ์ด๋ธ”์ข…๋ฅ˜.csv ๋กœ ์ด 5๊ฐœ์˜ csvํŒŒ์ผ ์ƒ์„ฑ
  • ์‹คํ–‰ํŒŒ์ผํด๋”์— csv์ƒ์„ฑ.

6) ๋กœ๊ทธ์ธ

  • ์ฃผ์†Œ, ID ,PW๋ฅผ ๋ฐ›์•„์™€ extract.py์˜ Ui_Dialogํด๋ž˜์Šค init๋ถ€๋ถ„์—์„œ crowling ์‹คํ–‰.(selenium, bs4 ์‚ฌ์šฉ)

7) ํฌ๋กค๋ง์œผ๋กœ csvํŒŒ์ผ์„ ๋ฐ›์•„์˜ฌ ๋•Œ, Headless๋กœ ๊ตฌํ˜„ ๋ฐ ์†๋„ ํ–ฅ์ƒ.

  • csv๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š”๋ฐ ๋ณดํŽธ์ ์œผ๋กœ ์“ฐ์ด๋Š” ๊ฒƒ์ด Pandas.lib์ด์ง€๋งŒ ๋ฐ์ดํ„ฐ ํฌ๊ธฐ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก์ฝ๊ฑฐ๋‚˜์“ธ ๋•Œ ๋Š๋ ค์ง€๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ Pyarrow๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ™œ์šฉํ•˜์—ฌ csvํŒŒ์ผ์ฒ˜๋ฆฌ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚จ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ์ ˆ์•ฝ์€ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†๋‹ค. multi thread๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค.

3. ๊ฒฐ๊ณผ

p3 p1