【问题标题】:How to avoid to launch firefox gui during a scraping of web page with javascript如何避免在使用 javascript 抓取网页期间启动 firefox gui
【发布时间】:2012-04-20 15:24:33
【问题描述】:

我正在尝试使用大量 javascript 抓取网页。在 pguardiano 的帮助下,我在 ruby​​ 中有这段代码。

 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 小时。我没有 ruby​​ 的经验,尤其是网页抓取,所以我有几个问题。

  1. 每次打开一个新的 firefox 会话并消耗大量 cpu 和 ram 时,我怎样才能避免这种情况?

  2. 是否可以在不使用其 GUI 的情况下使用 firefox 引擎?

【问题讨论】:

标签: ruby web-scraping firefox watir


【解决方案1】:

您可以尝试headless 选项。

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 server。第三种选择是使用像Kapow 这样的刮板。

【讨论】:

  • 我认为您最好使用较低级别的解决方案,例如 HTTP-Party gem 来发出请求并获取响应,然后使用 Nokogiri 解析 HTML。 Watir 更多的是用于网站的功能测试,虽然我可以用来进行抓取,但这不是它的主要目的,所以它可能不是一个理想的解决方案
  • 我同意。如果我想要一个便宜/简单的爬虫库,我会使用 Mechanize 和 Nokogiri。但这并不总是适用于 emenuele 提到的 javascript 网站。 Watir 或 Watir-Webdriver 可以。
  • 是的,如果有很多客户端代码,您需要一个真正的浏览器,或者非常接近的浏览器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-02
  • 2011-05-28
  • 2018-04-06
  • 1970-01-01
  • 1970-01-01
  • 2020-03-02
  • 1970-01-01
相关资源
最近更新 更多