如何使用mechanize gem同时抓取普通图片与rel=icon类型的图标链接
解决方案
你可以通过Mechanize内置的DOM查询方法筛选rel="icon"属性的link标签,提取href并处理路径后,和img标签的图片资源合并即可,调整后的完整代码如下:
require 'mechanize' url = "https://mywebsite.com/" agent = Mechanize.new page = agent.get(url) # 收集所有img标签的图片地址 all_images = page.images.map(&:to_s) # 收集所有rel=icon的link标签指向的图标资源 page.search('link[rel="icon"]').each do |icon_link| # 自动处理相对路径,转为可访问的绝对路径 icon_url = page.uri.join(icon_link['href']).to_s all_images << icon_url end # 输出所有图片资源地址 all_images.each do |img_url| puts img_url end
关键说明:
page.search('link[rel="icon"]')基于Mechanize底层依赖的Nokogiri解析能力,通过CSS选择器精准匹配所有图标链接标签page.uri.join(icon_link['href'])兼容站点使用相对路径存放图标的场景,避免抓取到无效地址- 最终
all_images数组同时包含了img标签的普通图片和link标签的图标资源
内容的提问来源于stack exchange,提问作者SkRoR
相关产品推荐
相关产品推荐

