[루비] selenium에서 Chrome을 사용한 웹 스크래핑
환경
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.13.6
BuildVersion: 17G65
$ ruby -v
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin17]
아래 준비
1. Google Chrome 설치
Google Chrome 공식
2. chromedriver 다운로드/경로를 통해서
2-1. 파일 다운로드
GUI의 경우:
h tp // ch로메 d리ゔぇr. s 가시. ㅇㅜㅜㅜㅜ 이 m/그리고 x. HTML
CUI의 경우:
$ curl -O -L http://chromedriver.storage.googleapis.com/2.42/chromedriver_mac64.zip # -> カレントディレクトリ配下にダウンロード
※ダウンロードURLはバージョンに合わせてよしなに調べて下さい
$ unzip chromedriver_mac64.zip
$ rm chromedriver_mac64.zip
2-2. 파일 이동
$ sudo mv ['解凍したchromedriver'] /usr/local/bin
2-3. 패스를 통과
$ export PATH="/usr/local/bin:$PATH"
2-4. 확인
$ which chromedriver
--> /usr/local/bin/chromedriver
3. selenium-webdriver(gem) 설치
3-1. selenium-webdriver 설치
gem 'selenium-webdriver' # この記載を追加
$ bundle install
$ gem install selenium-webdriver
3-2. 확인
$ gem list | grep selenium-webdriver
-> selenium-webdriver (3.12.0) ※特定のバージョンが良い場合はよしなに指定
코드
require 'selenium-webdriver'
@wait_time = 3
@timeout = 4
# Seleniumの初期化
# class ref: https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Chrome
Selenium::WebDriver.logger.output = File.join("./", "selenium.log")
Selenium::WebDriver.logger.level = :warn
driver = Selenium::WebDriver.for :chrome
driver.manage.timeouts.implicit_wait = @timeout
wait = Selenium::WebDriver::Wait.new(timeout: @wait_time)
# Yahooを開く
driver.get('https://www.yahoo.co.jp/')
# ちゃんと開けているか確認するため、sleepを入れる
sleep 2
#**
# ブラウザでさせたい動作を記載する
# ex. 検索欄に'Ruby'と入力して、検索ボタンを押す処理
# 検索欄/検索ボタン取得
begin
search_box = driver.find_element(:id, 'srchtxt') # 検索欄
search_btn = driver.find_element(:id, 'srchbtn') # 検索ボタン
rescue Selenium::WebDriver::Error::NoSuchElementError
p 'no such element error!!'
return
end
# 入力欄に'Ruby'を入力し、検索ボタンを押下
search_box.send_keys 'Ruby'
search_btn.click
#**
# ドライバーを閉じる
driver.quit
주의점
-> htp : // 가다랭이 g. t ch / e-do-t-rekomen d-ushin g-s p p-u-wai-chin g-fu-r-e-men ts /
log_file = File.join('./', "function.log")
@log = Logger.new(log_file)
def log(msg)
@log.debug(msg)
end
참고
드라이버로의 처리에 대해 (조작 방법을 정리해 줍니다)
요약
일에서 자주 사용할 기회가 있기 때문에, 비망도 겸해 썼습니다.
기억해 버리면, 간단하게 스크래핑 할 수 있으므로 편리하고 있습니다.
cron과 DB를 조합하면, 데이터를 정기적으로 취해 와서 보존해 두어, 기계 학습등에도 사용할 수 있으므로 편리하네요.
Reference
이 문제에 관하여([루비] selenium에서 Chrome을 사용한 웹 스크래핑), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/y-agatsuma/items/ea2c9845ee0a931d5c9c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)