CAPSOLVER
Blog
Cách sử dụng Playwright trong Ruby để trích xuất dữ liệu web

Cách sử dụng Playwright trong Ruby để Scrape Web

Logo of CapSolver

Emma Foster

Machine Learning Engineer

08-Oct-2024

Thuật web scraping đã trở thành một kỹ năng cần thiết để thu thập dữ liệu từ các trang web, cho dù là để phân tích thị trường, nghiên cứu học thuật hay bất kỳ dự án dựa trên dữ liệu nào. Playwright là một công cụ tự động hóa trình duyệt tuyệt vời có thể được sử dụng để thu thập dữ liệu từ các trang web một cách hiệu quả, cung cấp hỗ trợ cho nhiều ngôn ngữ, bao gồm cả Ruby. Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách thiết lập và sử dụng Playwright trong Ruby để thu thập dữ liệu từ một trang web, sử dụng quotes.toscrape.com làm ví dụ.

Playwright là gì?

Playwright là một khung tự động hóa hiện đại để kiểm thử web, tương tự như Selenium nhưng với tốc độ thực thi nhanh hơn và hỗ trợ tất cả các trình duyệt hiện đại như Chromium, Firefox và WebKit. Nó cung cấp các công cụ tự động hóa trình duyệt mạnh mẽ cho việc thu thập dữ liệu headless và headed, điều hướng trang, tương tác với biểu mẫu và hơn thế nữa.

Tại sao sử dụng Playwright với Ruby?

Ruby là một ngôn ngữ phổ biến được biết đến với sự đơn giản và cú pháp thân thiện với nhà phát triển. Bằng cách sử dụng Playwright với Ruby, bạn có thể tận dụng sức mạnh của tự động hóa trình duyệt hiện đại trong khi vẫn duy trì cấu trúc mã sạch và dễ đọc của Ruby. Playwright rất lý tưởng để thu thập dữ liệu web do tốc độ, điều kiện chờ tích hợp sẵn và khả năng xử lý nội dung động được tải bởi JavaScript.

Thiết lập Playwright trong Ruby

Để bắt đầu thu thập dữ liệu với Playwright trong Ruby, bạn cần thiết lập một vài thứ:

1. Cài đặt Ruby

Đảm bảo bạn đã cài đặt Ruby trên máy của mình. Bạn có thể kiểm tra điều này bằng cách chạy lệnh sau trong thiết bị đầu cuối của mình:

bash Copy
ruby -v

Nếu Ruby chưa được cài đặt, bạn có thể cài đặt nó thông qua rbenv hoặc trực tiếp từ trang web chính thức của Ruby.

2. Cài đặt Gem Playwright

Tiếp theo, bạn cần cài đặt gem playwright-ruby-client. Gem này cung cấp các ràng buộc Playwright cho Ruby, cho phép bạn tương tác với các trình duyệt theo chương trình.

Chạy lệnh sau để cài đặt gem:

bash Copy
gem install playwright-ruby-client

3. Cài đặt Trình duyệt

Sau khi cài đặt gem, bạn cần cài đặt các trình duyệt được Playwright hỗ trợ. Chạy lệnh sau:

bash Copy
playwright install

Điều này sẽ tải xuống Chromium, Firefox và WebKit để sử dụng với Playwright.

Ví dụ thu thập dữ liệu: Thu thập trích dẫn từ một trang web

Hãy cùng tìm hiểu một ví dụ thu thập dữ liệu đơn giản, trong đó chúng ta sẽ trích xuất các trích dẫn từ quotes.toscrape.com. Trang web này chứa các câu nói nổi tiếng cùng với tác giả, làm cho nó trở thành một nguồn tài nguyên tuyệt vời để thực hành thu thập dữ liệu.

Bước 1: Khởi tạo Playwright và Khởi chạy Trình duyệt

Đầu tiên, bạn cần khởi tạo Playwright và khởi chạy một trình duyệt (Chromium trong trường hợp này). Dưới đây là cách thực hiện:

ruby Copy
require 'playwright-ruby-client'

Playwright.create(playwright_cli_executable_path: '/path/to/cli') do |playwright|
  browser = playwright.chromium.launch(headless: true)  # Khởi chạy trình duyệt headless
  page = browser.new_page
  page.goto('http://quotes.toscrape.com/')

  puts "Tiêu đề trang: #{page.title}"  # Tùy chọn: In tiêu đề trang để xác minh rằng nó đã được tải chính xác

  # Đóng trình duyệt
  browser.close
end

Trong đoạn mã này, Playwright mở trang quotes.toscrape.com trong trình duyệt Chromium headless.

Bước 2: Thu thập trích dẫn và tác giả

Bây giờ, chúng ta muốn thu thập các trích dẫn và tác giả của chúng từ trang. Để làm điều này, chúng ta cần kiểm tra cấu trúc trang và xác định các phần tử chứa các trích dẫn và tác giả.

Dưới đây là mã trích xuất các trích dẫn và tác giả tương ứng của chúng:

ruby Copy
require 'playwright-ruby-client'

Playwright.create(playwright_cli_executable_path: '/path/to/cli') do |playwright|
  browser = playwright.chromium.launch(headless: true)
  page = browser.new_page
  page.goto('http://quotes.toscrape.com/')

  # Tìm tất cả các phần tử trích dẫn
  quotes = page.query_selector_all('.quote')

  quotes.each do |quote|
    text = quote.query_selector('.text').text_content.strip
    author = quote.query_selector('.author').text_content.strip
    puts "Trích dẫn: #{text} - Tác giả: #{author}"
  end

  browser.close
end

Script này sử dụng Playwright để truy cập trang web, trích xuất văn bản trích dẫn và tác giả, sau đó in chúng ra bảng điều khiển. Lớp .quote nhắm mục tiêu vào từng khối trích dẫn, và chúng ta sử dụng .text.author để trích xuất thông tin liên quan.

Bước 3: Xử lý phân trang

Trang web trích dẫn sử dụng phân trang, vì vậy bạn có thể muốn thu thập tất cả các trang, không chỉ trang đầu tiên. Dưới đây là cách xử lý phân trang:

ruby Copy
require 'playwright-ruby-client'

Playwright.create(playwright_cli_executable_path: '/path/to/cli') do |playwright|
  browser = playwright.chromium.launch(headless: true)
  page = browser.new_page
  page.goto('http://quotes.toscrape.com/')

  loop do
    quotes = page.query_selector_all('.quote')

    quotes.each do |quote|
      text = quote.query_selector('.text').text_content.strip
      author = quote.query_selector('.author').text_content.strip
      puts "Trích dẫn: #{text} - Tác giả: #{author}"
    end

    next_button = page.query_selector('li.next > a')
    break unless next_button  # Thoát vòng lặp nếu không có trang tiếp theo

    next_button.click
    page.wait_for_load_state('load')  # Chờ trang tiếp theo tải

  end

  browser.close
end

Mã này lặp lại từng trang bằng cách nhấp vào nút "Tiếp theo" cho đến khi không còn trang nào nữa. Nó tiếp tục trích xuất các trích dẫn và tác giả từ mọi trang.

Hướng dẫn từng bước: Giải quyết captcha bằng Playwright và CapSolver trong Ruby

Hướng dẫn này giải thích cách giải quyết reCaptcha bằng tiện ích mở rộng trình duyệt CapSolver với Playwright trong Ruby. CapSolver cung cấp một cách dễ dàng để xử lý captcha mà không cần viết thêm mã để trực tiếp giải quyết chúng.

Bước 1: Cài đặt Playwright và các phụ thuộc

Đầu tiên, đảm bảo bạn đã cài đặt Playwright:

bash Copy
gem install playwright-ruby-client

Bước 2: Tải xuống và cấu hình tiện ích mở rộng CapSolver

  1. Tải xuống tiện ích mở rộng CapSolver:

    • Tải xuống tiện ích mở rộng CapSolver từ trang phát hành GitHub của CapSolver.
    • Giải nén tiện ích mở rộng vào một thư mục ở gốc của dự án của bạn, chẳng hạn như ./CapSolver.Browser.Extension.
  2. Cấu hình tiện ích mở rộng:

    • Tìm tệp cấu hình ./assets/config.json trong thư mục tiện ích mở rộng CapSolver.
    • Đặt tùy chọn enabledForcaptcha thành true và điều chỉnh captchaMode thành token để tự động giải quyết.

    Ví dụ config.json:

    json Copy
    {
      "enabledForcaptcha": true,
      "captchaMode": "token"
      // các cài đặt khác giữ nguyên
    }

Bước 3: Thiết lập Playwright với tiện ích mở rộng CapSolver

Dưới đây là cách bạn có thể tải tiện ích mở rộng CapSolver vào trình duyệt Playwright:

  1. Yêu cầu Playwright và Thiết lập Đường dẫn:

    ruby Copy
    require 'playwright-ruby-client'
    require 'fileutils'
    
    # Lấy đường dẫn cho thư mục tiện ích mở rộng CapSolver
    extension_path = File.join(Dir.pwd, 'CapSolver.Browser.Extension')
  2. Khởi chạy Trình duyệt với tiện ích mở rộng CapSolver:
    Sử dụng Playwright để khởi chạy trình duyệt Chromium với tiện ích mở rộng CapSolver đã được tải.

    ruby Copy
    Playwright.create(playwright_cli_executable_path: '/path/to/cli') do |playwright|
      browser = playwright.chromium.launch_persistent_context('', {
        headless: false,  # Chạy với trình duyệt hiển thị để gỡ lỗi
        args: [
          "--disable-extensions-except=#{extension_path}",
          "--load-extension=#{extension_path}"
        ]
      })
    
      page = browser.new_page
      page.goto('https://quotes.toscrape.com/')  # Thay thế bằng URL mục tiêu
    
      # Định vị hộp kiểm hoặc khung captcha và tương tác với nó
      page.wait_for_selector('iframe', state: 'visible')  # Điều chỉnh bộ chọn để nhắm mục tiêu iframe captcha
      page.click('iframe')  # Điều chỉnh sự kiện nhấp chuột cho tương tác captcha của bạn
    
      # Có thể thêm các bước bổ sung dựa trên yêu cầu của trang web
    
      browser.close
    end

Các bước để giải quyết reCaptcha giống như captcha.

Mã thưởng

Nhận Mã thưởng của bạn cho các giải pháp captcha hàng đầu tại CapSolver: scrape. Sau khi đổi, bạn sẽ nhận được thêm 5% tiền thưởng sau mỗi lần nạp tiền, không giới hạn lần.

Kết luận

Sử dụng Playwright trong Ruby để thu thập dữ liệu web cung cấp một cách hiệu quả và mạnh mẽ để trích xuất dữ liệu từ các trang web. Cho dù đó là nội dung tĩnh đơn giản hay các trang được tải động, Playwright đều xử lý cả hai một cách dễ dàng. Trong hướng dẫn này, chúng ta đã thu thập các trích dẫn và tác giả từ một trang web, nhưng Playwright có thể làm được nhiều hơn thế nữa — như tương tác với biểu mẫu, chụp ảnh màn hình hoặc thậm chí chạy các bài kiểm tra dựa trên trình duyệt.

Nếu bạn đang tìm kiếm một công cụ mạnh mẽ để thu thập dữ liệu web trong Ruby, Playwright là một lựa chọn tuyệt vời. Nó dễ thiết lập, nhanh chóng và đủ linh hoạt để xử lý nhiều tác vụ thu thập dữ liệu khác nhau.

Tuyên bố Tuân thủ: Thông tin được cung cấp trên blog này chỉ mang tính chất tham khảo. CapSolver cam kết tuân thủ tất cả các luật và quy định hiện hành. Việc sử dụng mạng lưới CapSolver cho các hoạt động bất hợp pháp, gian lận hoặc lạm dụng là hoàn toàn bị cấm và sẽ bị điều tra. Các giải pháp giải captcha của chúng tôi nâng cao trải nghiệm người dùng trong khi đảm bảo tuân thủ 100% trong việc giúp giải quyết các khó khăn về captcha trong quá trình thu thập dữ liệu công khai. Chúng tôi khuyến khích việc sử dụng dịch vụ của chúng tôi một cách có trách nhiệm. Để biết thêm thông tin, vui lòng truy cập Điều khoản Dịch vụ và Chính sách Quyền riêng tư.

Thêm

Các User Agent Tốt Nhất để Scrape Web & Cách Sử Dụng Chúng
Các User Agent Tốt Nhất để Scrape Web & Cách Sử Dụng Chúng

Hướng dẫn về các user agent tốt nhất để scrape web và cách sử dụng hiệu quả để tránh bị phát hiện. Khám phá tầm quan trọng của user agent, các loại và cách triển khai chúng để scrape web liền mạch và không bị phát hiện.

Logo of CapSolver

Anh Tuan

07-Mar-2025

Cách giải quyết thử thách Cloudflare JS để thu thập dữ liệu web và tự động hóa
Cách giải quyết thử thách Cloudflare JS để thu thập dữ liệu web và tự động hóa

Tìm hiểu cách giải quyết thử thách JavaScript của Cloudflare để thu thập dữ liệu web và tự động hóa liền mạch. Khám phá các chiến lược hiệu quả, bao gồm sử dụng trình duyệt không đầu, luân phiên proxy, và tận dụng khả năng giải quyết CAPTCHA nâng cao của CapSolver.

Cloudflare
Logo of CapSolver

Anh Tuan

05-Mar-2025

Dấu vân tay TLS của Cloudflare: Nó là gì và cách giải quyết
Dấu vân tay TLS của Cloudflare: Nó là gì và cách giải quyết

Tìm hiểu về việc Cloudflare sử dụng dấu vân tay TLS để bảo mật, cách nó phát hiện và chặn bot, và khám phá các phương pháp hiệu quả để giải quyết vấn đề này cho các tác vụ thu thập dữ liệu web và duyệt web tự động.

Cloudflare
Logo of CapSolver

Anh Tuan

28-Feb-2025

Tại sao tôi cứ bị yêu cầu xác minh rằng tôi không phải là người máy?
Tại sao tôi cứ bị yêu cầu xác minh rằng tôi không phải là người máy?

Tìm hiểu lý do tại sao Google yêu cầu bạn xác minh rằng bạn không phải là robot và khám phá các giải pháp như sử dụng API của CapSolver để giải quyết các thử thách CAPTCHA một cách hiệu quả.

Logo of CapSolver

Anh Tuan

27-Feb-2025

Cách trích xuất dữ liệu từ trang web được bảo vệ bởi Cloudflare
Cách trích xuất dữ liệu từ trang web được bảo vệ bởi Cloudflare

Trong hướng dẫn này, chúng ta sẽ khám phá các kỹ thuật đạo đức và hiệu quả để trích xuất dữ liệu từ các trang web được bảo vệ bởi Cloudflare.

Cloudflare
Logo of CapSolver

Anh Tuan

20-Feb-2025

Tại sao các trang web lại nghĩ tôi là bot? Và cách giải quyết chúng
Tại sao các trang web lại nghĩ tôi là bot? Và cách giải quyết chúng

Hiểu tại sao các trang web đánh dấu bạn là bot và cách tránh bị phát hiện. Các tác nhân chính bao gồm các thử thách CAPTCHA, IP đáng ngờ và hành vi trình duyệt bất thường.

Logo of CapSolver

Anh Tuan

20-Feb-2025