位置:首页 > Ruby > Ruby实现网页图片抓取的方法与实战教程

Ruby实现网页图片抓取的方法与实战教程

时间:2026-08-17  |  作者:清风无痕  |  阅读:0

在论坛上看到不少人分享爬取图片的脚本,正好有类似的需求,就顺手写了一个。

下面这个 Ruby 模块封装了完整的下载流程。核心思路其实很简单:解析页面结构,提取图片链接,然后逐一保存到本地。

Ruby实现网页图片抓取

module CommonHelper
 
 require 'nokogiri'
 require 'open-uri'
 
 def down_load_xmz
  site_url = "http://www.xxx.com"
 
  for index_page in 1..141
   doc_html = Nokogiri::HTML(open(site_url+'/share/comment-page-'+index_page.to_s))
   doc_html.css("#comments p img").each do |item_img|
    puts item_img[:src]
    download_img(item_img[:src])
   end
  end
 end
 
 ########下载图片
 def download_img(img_url)
  begin
   img_file = open(img_url) { |f| f.read }
   file_name = img_url.split('/').last
   #puts file_name
   open("public/meizi/"+file_name, "wb") { |f| f.write(img_file) }
   return "/public/meizi/"+file_name
  rescue => err
   puts err
   return ''
  end
 end
 
end

代码流程说明

从代码结构来看,down_load_xmz 方法负责遍历所有评论分页,一共141页

每页都通过 Nokogiri 解析 HTML,然后用 CSS 选择器定位到评论区域内的图片标签。

拿到 src 属性后,直接调用 download_img 方法保存文件。

下载逻辑拆解

  • 页面遍历:按页访问评论列表。
  • 内容解析:使用 Nokogiri 读取并解析 HTML。
  • 图片提取:通过 #comments p img 选择器获取图片。
  • 文件保存:读取图片内容并写入本地目录。

异常处理说明

下载部分加了异常处理。遇到坏链或网络问题时,也不会中断整个流程。

这是生产环境中很实用的习惯,能让批量抓取过程更稳定。

使用时需要注意

注意图片保存路径是 public/meizi/,记得提前建好目录。

如果想换其他网站,改一下 site_url 和选择器即可。

免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。

相关文章

更多

精选合集

更多

大家都在玩

热门话题

大家都在看

更多