如何使用Mechanize计算某个页面上的图像数量?

时间:2014-05-15 20:52:01

标签: ruby mechanize

我在Rails 4应用程序中使用Mechanize。我创建了一个新的agent来抓取页面:

clienturl = @bid.mozs.where(is_main: true).first.attributes['url']
agent = Mechanize.new
@page = agent.get('http://' + clienturl)
@url = @page.uri

我可以做一些事情,比如获取uri,title和meta描述。我现在想要获取页面上的图像数量,以及有多少图像缺少alt属性。这可能与Mechanize有关吗?

1 个答案:

答案 0 :(得分:2)

做这样的事情:

require 'mechanize'

agent = Mechanize.new
page = agent.get('http://www.iana.org/domains/reserved')
doc = page.parser

img_count = doc.search('img').size # => 2
img_w_alt_count = doc.search('img[@alt]').size # => 1
img_count - img_w_alt_count # => 1

Nokogiri是Mechanize中的解析器。 parser返回已解析DOM的实例。从那里我们可以向Nokogiri询问search与选择器匹配的所有节点。我使用了CSS选择器,但你也可以使用XPath; CSS往往更具可读性和更简洁。

search返回一个NodeSet,因此size告诉我们匹配了多少个节点。