Как избежать запуска графического интерфейса Firefox во время очистки веб-страницы с помощью javascript

Я пытаюсь удалить веб-страницу с большим количеством javascript. с помощью pguardiano у меня есть этот кусок кода на рубине.

 require 'rubygems'
 require 'watir-webdriver'
 require 'csv'
 @browser = Watir::Browser.new
 @browser.goto 'http://www.oddsportal.com/matches/soccer/'
 CSV.open('out.csv', 'w') do |out|
 @browser.trs(:class => /deactivate/).each do |tr|
    out << tr.tds.map(&:text)
 end
 end

Соскоб выполняется рекурсивно в фоновом режиме со временем ожидания примерно 1 час. У меня нет опыта работы с рубином и, в частности, с веб-скрапингом, поэтому у меня есть пара вопросов.

  1. Как я могу избежать этого каждый раз, когда открывается новый сеанс Firefox с большим потреблением процессора и оперативной памяти?

  2. Можно ли использовать движок Firefox без использования его графического интерфейса?


person emanuele    schedule 07.04.2012    source источник
comment
см. ответ здесь stackoverflow.com/ вопросы/5370762/   -  person peter    schedule 07.04.2012


Ответы (1)


Вы можете попробовать вариант без головы.

require 'watir-webdriver'
require 'headless'
headless = Headless.new
headless.start
b = Watir::Browser.start 'www.google.com'
puts b.title
b.close
headless.destroy

В качестве альтернативы можно использовать selenium-сервер. Третий вариант — использовать парсер, такой как Kapow.

person Dave McNulla    schedule 08.04.2012
comment
Я бы подумал, что вам лучше использовать решение более низкого уровня, такое как что-то вроде драгоценного камня HTTP-Party, чтобы сделать запрос и получить ответ, а затем Nokogiri для анализа HTML. Watir больше предназначен для функционального ТЕСТИРОВАНИЯ веб-сайта, и хотя меня можно использовать для парсинга, это не является его основной целью, поэтому это может быть не идеальное решение. - person Chuck van der Linden; 09.04.2012
comment
Я согласен. Если бы мне нужна была дешевая/простая библиотека парсинга, я бы использовал Mechanize с Nokogiri. Но это не всегда работает с веб-сайтами javascript, как упоминал Эменуэле. Watir или Watir-Webdriver. - person Dave McNulla; 09.04.2012
comment
да, если есть много кода на стороне клиента, вам нужен настоящий браузер или что-то очень близкое к нему. - person Chuck van der Linden; 10.04.2012