duo_board_crawling 0.0.5 → 0.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/duo_board_crawling.rb +72 -84
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b8c7f6c53d26ac76b19e5c649c45954005693cf279f53eeeeca6e1f2853998ce
4
- data.tar.gz: 3c84ecec1d5891172dc16420c6e42a62427e1a69be3ddd502e4df445209046cd
3
+ metadata.gz: 5b1cf08fffbac6b61fc09825b33c60d8c855102606262fa28173459a63a98d20
4
+ data.tar.gz: 73bdd06d375a4b03f56d239f8cdfe8af49942e1338b90d78ef55873044a7a62d
5
5
  SHA512:
6
- metadata.gz: 1a95ef8b4180403df2667c9c00618175b2ab20ed6b8191c5ce94436e72b3e571b892448cb2199b1db5be3d7cf545a96745b47211e94f1211e679288944e79f58
7
- data.tar.gz: 7da6301c6b187cfcd668402bbf130328c8d369efef28df197b7139ce433decc3299b746495261cf1720fc5fbd30034794ccb6fed6feedad1c7c0631709756fe1
6
+ metadata.gz: 82f191399bfea1535acf99a94963cb8b71c9ffef5cf7832d25eca408e44fdf078f9a8055099054afc6c674fa5c3574f2c82a6b93fcc13553e24dfab53caf14aa
7
+ data.tar.gz: 239c152c446b3bd8d08501beaf4c4dac30648100d2672a5157a238ceb34ed75c37bfd4f411e057a877e7e7e562a4834bdfdebfb1ac87e1341361590ff07b2e63
@@ -1,6 +1,5 @@
1
1
  require 'glimmer-dsl-libui'
2
2
  require 'selenium-webdriver'
3
- require 'webdrivers'
4
3
  require 'http'
5
4
  require 'json'
6
5
  require 'open3'
@@ -16,35 +15,41 @@ require 'win32ole'
16
15
  using Rainbow
17
16
 
18
17
 
19
-
20
-
21
-
22
18
  class Naver
23
19
  def initialize
20
+ kill_selenium_chrome #기존 창 모두 닫는 명령
21
+ sleep(1)
22
+ end
24
23
 
25
- begin
26
- # webdrivers가 사용자의 Chrome 버전에 맞는 chromedriver 다운로드 시도
27
- puts "크롬을 최신 상태로 업데이트 해주세요"
28
- puts "크롬 최신 상태가 아닐경우 오류가 발생될수있습니다."
29
- # Webdrivers가 드라이버를 다운로드할 경로를 설정
30
- Webdrivers.cache_time = 86_400 # 하루로 설정 (기본값: 86_400초)
31
- Webdrivers.install_dir = "./" # 크롬드라이버를 수동으로 설치할 경로를 설정
32
- # 크롬드라이버 자동 업데이트 시도
33
- Webdrivers::Chromedriver.update
34
- puts "chromedriver 자동 다운로드 성공"
35
- rescue => e
36
- puts "chromedriver 자동 다운로드 실패: #{e.message}"
37
- puts "폴더내 크롬드라이버를 사용합니다."
38
- puts "크롬드라이버가 오래된 경우 오류 발생될 수 있으며, 만일 오류 발생시 아래 지침을 따라주세요."
39
- puts "1.크롬 업데이트 2.프로그램 폴더 내부에 ★tip★-시작시-크롬창이....파일을 열어 드라이버를 교체하세요."
40
- chromedriver_path = './chromedriver.exe' # 수동 경로를 인스턴스 변수로 설정
41
- Selenium::WebDriver::Chrome::Service.driver_path = chromedriver_path
24
+ def kill_selenium_chrome #기존 창 모두 닫는 코드
25
+ wmi = WIN32OLE.connect("winmgmts://")
26
+ chrome_procs = wmi.ExecQuery("SELECT * FROM Win32_Process WHERE Name = 'chrome.exe'")
27
+
28
+ chrome_procs.each do |proc|
29
+ cmd = proc.CommandLine
30
+ if cmd && cmd.include?("user-data-dir=C:/scraping_cookie")
31
+ puts "→ 크롬 초기화: PID #{proc.ProcessId}"
32
+ begin
33
+ proc.Terminate
34
+ rescue
35
+ #puts " 이미 종료된 프로세스: #{proc.ProcessId}"
36
+ end
37
+ end
42
38
  end
43
39
 
44
- end
45
-
40
+ # chromedriver도 같이 종료
41
+ chromedrivers = wmi.ExecQuery("SELECT * FROM Win32_Process WHERE Name = 'chromedriver.exe'")
42
+ chromedrivers.each do |proc|
43
+ puts "→ 크롬 창 초기화: PID #{proc.ProcessId}"
44
+ begin
45
+ proc.Terminate
46
+ rescue
47
+ #puts "→ 이미 종료된 chromedriver: #{proc.ProcessId}"
48
+ end
49
+ end
50
+ end
46
51
 
47
- def chrome_setup(proxy, scraping_cookie_dir = "C:/scraping_cookie")
52
+ def chrome_setup(proxy, scraping_cookie_dir = "C:/scraping_cookie")
48
53
  scraping_cookie_dir = "C:/scraping_cookie"
49
54
  FileUtils.mkdir_p(scraping_cookie_dir) unless File.exist?(scraping_cookie_dir)
50
55
 
@@ -53,15 +58,27 @@ class Naver
53
58
  else
54
59
  system(%{"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe" --remote-debugging-port=9222 --user-data-dir=C:/scraping_cookie --proxy-server=#{proxy.to_s.force_encoding('utf-8').to_s} --no-first-run --no-default-browser-check --disable-sync https://chromewebstore.google.com/detail/captcha-solver-auto-recog/ifibfemgeogfhoebkmokieepdoobkbpo?hl=ko})
55
60
  end
56
- end
61
+ end
57
62
 
58
63
 
59
64
 
60
- def chrome_start(proxy, scraping_cookie_dir = "C:/scraping_cookie")
65
+ def chrome_start(proxy, scraping_cookie_dir = "C:/scraping_cookie")
61
66
  scraping_cookie_dir = "C:/scraping_cookie"
62
67
  FileUtils.mkdir_p(scraping_cookie_dir) unless File.exist?(scraping_cookie_dir)
63
68
  if proxy == ''
64
69
  begin
70
+ begin
71
+ Selenium::WebDriver::Chrome::Service.driver_path = './chromedriver.exe'
72
+ rescue => e
73
+ puts "chromedriver 버전 불일치!!"
74
+ puts "아래 지침을 따라주세요."
75
+ puts "1.프로그램 종료!"
76
+ puts "2.크롬 업데이트!"
77
+ puts "3.프로그램 폴더 내부에 ★tip★-시작시-크롬창이....파일 실행"
78
+ puts "4.안내된 방식으로 크롬 드라이버 교체"
79
+ puts "5.재 시작"
80
+ exit 1
81
+ end
65
82
  options = Selenium::WebDriver::Chrome::Options.new
66
83
  options.add_argument('--no-first-run') # 자동 실행 시 나타나는 "첫 실행" 화면 방지
67
84
  #options.add_argument('--disable-extensions') # 확장 프로그램 초기화 화면 방지
@@ -94,7 +111,18 @@ class Naver
94
111
  end
95
112
  else
96
113
  begin
97
- Selenium::WebDriver::Chrome::Service.driver_path = './chromedriver.exe'
114
+ begin
115
+ Selenium::WebDriver::Chrome::Service.driver_path = './chromedriver.exe'
116
+ rescue => e
117
+ puts "chromedriver 버전 불일치!!"
118
+ puts "아래 지침을 따라주세요."
119
+ puts "1.프로그램 종료!"
120
+ puts "2.크롬 업데이트!"
121
+ puts "3.프로그램 폴더 내부에 ★tip★-시작시-크롬창이....파일 실행"
122
+ puts "4.안내된 방식으로 크롬 드라이버 교체"
123
+ puts "5.재 시작"
124
+ exit 1
125
+ end
98
126
  options = Selenium::WebDriver::Chrome::Options.new
99
127
  options.add_argument('--no-first-run') # 자동 실행 시 나타나는 "첫 실행" 화면 방지
100
128
  options.add_argument('--disable-extensions') # 확장 프로그램 초기화 화면 방지
@@ -123,7 +151,18 @@ class Naver
123
151
  puts e
124
152
  puts 'proxy error...'
125
153
  begin
126
- Selenium::WebDriver::Chrome::Service.driver_path = './chromedriver.exe'
154
+ begin
155
+ Selenium::WebDriver::Chrome::Service.driver_path = './chromedriver.exe'
156
+ rescue => e
157
+ puts "chromedriver 버전 불일치!!"
158
+ puts "아래 지침을 따라주세요."
159
+ puts "1.프로그램 종료!"
160
+ puts "2.크롬 업데이트!"
161
+ puts "3.프로그램 폴더 내부에 ★tip★-시작시-크롬창이....파일 실행"
162
+ puts "4.안내된 방식으로 크롬 드라이버 교체"
163
+ puts "5.재 시작"
164
+ exit 1
165
+ end
127
166
  options = Selenium::WebDriver::Chrome::Options.new
128
167
  options.add_argument('--no-first-run') # 자동 실행 시 나타나는 "첫 실행" 화면 방지
129
168
  options.add_argument('--disable-extensions') # 확장 프로그램 초기화 화면 방지
@@ -246,63 +285,12 @@ class Naver
246
285
 
247
286
  begin
248
287
 
249
- begin
250
- # 최대 20초 동안 확장 프로그램 탭이 열릴 때까지 대기
251
- extension_url = 'chrome-extension://ifibfemgeogfhoebkmokieepdoobkbpo/options/options.html'
252
- max_wait_time = 20
253
- waited = 0
254
- found = false
255
-
256
- while waited < max_wait_time
257
- all_windows = @driver.window_handles
258
- all_windows.each do |window|
259
- @driver.switch_to.window(window)
260
- current_url = @driver.current_url
261
- if current_url.include?(extension_url)
262
- found = true
263
- break
264
- end
265
- end
266
- break if found
267
-
268
- sleep(3)
269
- waited += 1
270
- end
271
-
272
- if found
273
- # 확장 프로그램 탭을 제외한 나머지 탭 닫기
274
- all_windows = @driver.window_handles
275
- all_windows.each do |window|
276
- @driver.switch_to.window(window)
277
- current_url = @driver.current_url
278
- if !current_url.include?(extension_url)
279
- sleep(2)
280
- @driver.close
281
- sleep(2)
282
- end
283
- end
284
-
285
- # 확장 프로그램 탭으로 전환
286
- remaining_windows = @driver.window_handles
287
- if remaining_windows.size > 0
288
- @driver.switch_to.window(remaining_windows.first)
289
- end
290
- else
291
- puts "초기 작업 브라우저가 완벽하게 세팅 되지 않았습니다.".red
292
- puts "C드라이브에서 scraping_cookie 폴더 삭제 후 다시 시작해주세요.".red
293
- end
294
-
295
- rescue => e
296
- puts "초기 작업 브라우저가 완벽하게 세팅 되지 않았습니다.".red
297
- puts "C드라이브에서 scraping_cookie 폴더 삭제 후 다시 시작해주세요.".red
298
- @driver.quit if @driver
299
- end
300
-
301
-
302
-
303
-
288
+ @driver.get('chrome-extension://ifibfemgeogfhoebkmokieepdoobkbpo/options/options.html')
289
+ sleep(5)
304
290
 
305
291
  begin
292
+ @driver.get('chrome-extension://ifibfemgeogfhoebkmokieepdoobkbpo/options/options.html')
293
+ sleep(1)
306
294
  # 요소 찾기 타임아웃을 10초로 설정
307
295
  wait = Selenium::WebDriver::Wait.new(:timeout => 5)
308
296
  #요소가 나타날 때까지 60초 동안 기다립니다.
@@ -352,8 +340,8 @@ class Naver
352
340
 
353
341
  rescue
354
342
  begin
343
+ @driver.get('chrome-extension://ifibfemgeogfhoebkmokieepdoobkbpo/options/options.html')
355
344
  sleep(1)
356
-
357
345
  # 요소 찾기 타임아웃을 10초로 설정
358
346
  wait = Selenium::WebDriver::Wait.new(:timeout => 5)
359
347
  #요소가 나타날 때까지 60초 동안 기다립니다.
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: duo_board_crawling
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - zon
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-04-11 00:00:00.000000000 Z
10
+ date: 2025-05-29 00:00:00.000000000 Z
11
11
  dependencies: []
12
12
  description: File to Clipboard gem
13
13
  email: mymin26@naver.com