2016-09-10 20 views
8

Tôi đang sử dụng Ruby, Selenium WebDriver và Nokogiri để truy xuất dữ liệu từ các trang web. Khi HTML được tải đúng, tôi in nội dung của một lớp nhất định.Có thể sử dụng bot để mở trình duyệt, thao tác thủ công trang, sau đó tiếp tục sử dụng bot trên đó không?

Ví dụ,

require "selenium-webdriver" 
require "nokogiri" 
browser = Selenium::WebDriver.for :chrome 
browser.get "https://jsfiddle.net" 
doc = Nokogiri::HTML.parse(browser.page_source) 
doc.css('.aiButton').map(&:text).join(',') 

tôi đã tìm thấy cho đến nay phần khó nhất là nhận được HTML đúng nạp đúng cách. Ví dụ: nội dung tôi muốn có thể bị ẩn bởi một số javascript hoặc có thể nằm trên trang khác.

Có thể sử dụng Selenium để tải trang, sau đó thao tác thủ công trang để HTML hiển thị chính xác không và sau đó cho phép bot kết thúc và in nội dung mà nó được yêu cầu?

+0

câu trả lời ngắn gọn là có. Selenium sẽ mở một trình duyệt trong GUI của bạn và nó sẽ vẫn mở cho đến khi kịch bản của bạn được thực hiện. –

Trả lời

2

Bạn có thể sử dụng Selenium để tương tác với trang web - điền vào các trường biểu mẫu, nhấp vào nút vv. Bạn thậm chí có thể thực thi mã javascript của riêng mình.

Selenium cheat sheet

Edit:

Sử dụng nâng lên để ngăn chặn sự thực thi mã, do đó bạn có thể tự thao tác các trang web.

# Code for starting Selenium session and opening the web page 
... 

# Use pry to stop the code execution. 
# Resume the program using command 'exit' in the pry context 
require 'pry'; binding.pry 

# Code to get results after you manually manipulate the web page 
... 
+0

Tôi đã tìm thấy đó là phần tốn thời gian nhất. Có cách nào để làm điều đó một cách thủ công và sau đó nối lại bot sau khi tôi đã hoàn thành? –

+0

Tôi không biết tại sao bạn sẽ làm điều đó. Trình điều khiển Selenium sẽ luôn tương tác với trang web nhanh hơn bạn có thể theo cách thủ công. –

+0

Đó là vì mọi trường hợp sử dụng sẽ khác nhau, vì vậy tôi sẽ phải viết mã khác nhau mỗi lần. Nó nhanh hơn chỉ để có được HTML nằm bản thân mình. –

-1

Bạn có thể thực hiện việc này khá dễ dàng. Tôi không quen thuộc với ruby, nhưng tôi sẽ phác thảo quá trình.

1) bắt đầu lái xe 2) đi vào trang của bạn 3) sau đó yêu cầu người dùng nhập vào (trong python 2 ví dụ như: tiếp tục = raw_input ('loại một cái gì đó và nhấn Enter đây trong giao diện điều khiển để tiếp tục'))

4) sau đó thực hiện tất cả những việc khác bạn muốn làm.

Khi bạn thực thi tập lệnh này, nó sẽ dừng lại ở câu hỏi. Sau đó, bạn có thể thao tác thủ công trình duyệt và khi bạn hoàn tất, bạn vào cửa sổ console/cmd và gõ "go" và nhấn enter. Sau đó, nó sẽ tiếp tục từ nơi bạn rời khỏi trình duyệt theo cách thủ công.

Các vấn đề liên quan