15/10/2018, 22:11

Sử dụng Capybara để crawl trên một website cơ bản

1. Add Gem Ta cần thêm 2 gem vào trong Gemfile: gem "capybara" gem "capybara-webkit" gem "headless" ( nó cho phép tạo ra một màn hình trực tiếp từ mã Ruby với nhiều mục đích khác nhau như bạn có thể ghi lại các ảnh chụp màn hình hoặc video khi bạn cần ) ...

1. Add Gem

  • Ta cần thêm 2 gem vào trong Gemfile:
gem "capybara"
gem "capybara-webkit"
gem "headless" (nó cho phép tạo ra một màn hình trực tiếp từ mã Ruby với nhiều mục đích khác nhau như bạn có thể ghi lại các ảnh chụp màn hình hoặc video khi bạn cần)
  • Trước khi chạy bundle ta cần chạy lệnh:
sudo apt-get install qt5-default libqt5webkit5-dev gstreamer1.0-plugins-base gstreamer1.0-tools gstreamer1.0-x


sudo apt-get install xvfb

để 2 gem capybara-webkit và headless có thể hoạt động được.
( bạn có thể tham khảo thêm tại đây: Gem Headless và Capybara-webkit )

2. Tiến hành crawl từ một website về

  • Ta cần config cho capybara-webkit hoạt động được bằng cách tạo 1 file trong thư mục initializers của mục config /config/initializers/capybara_webkit_config.rb :
Capybara::Webkit.configure do |config|
  config.debug = false
  config.block_unknown_urls
  config.allow_unknown_urls
  config.timeout = 30
  config.ignore_ssl_errors
  config.skip_image_loading
end
  • Bây giờ, ta tiến hành tạo 1 services cho việc crawl từ một website về
    Ở đây, mình ví dụ với trang https://viblo.asia/
  • Đầu tiên, ta cần require "capybara/dsl" và include DSL của capybara vào để có thể sử dụng được các method như visit, all, within,... của capybara ( bạn có thể tham khảo về công dụng của các method đó tại đây Capybara )
  • Tiếp theo, đối với current_driver (trả về tên trình điều khiển đang được sử dụng) là chọn webkit(vì chúng ta đang sử dụng gem capybara-webkit mà             </div>
            
            <div class=
0