Ruby on rails 抓取页面的所有URL
我有一个片段可以在URL中成功地抓取图像,问题是,我想从各种网站收集大量图像,我不能每次都手动放置URL 既然我是个新手,你们是怎么面对的?刮取每个URL的最佳方法是什么? 我需要有一个CSV或什么的网址?是自动的吗 我的脚本Ruby on rails 抓取页面的所有URL,ruby-on-rails,scrape,Ruby On Rails,Scrape,我有一个片段可以在URL中成功地抓取图像,问题是,我想从各种网站收集大量图像,我不能每次都手动放置URL 既然我是个新手,你们是怎么面对的?刮取每个URL的最佳方法是什么? 我需要有一个CSV或什么的网址?是自动的吗 我的脚本 URL = 'http://www.sitasde.com' require 'rubygems' require 'nokogiri' require 'open-uri' require 'uri' def make_absolute( hre
URL = 'http://www.sitasde.com'
require 'rubygems'
require 'nokogiri'
require 'open-uri'
require 'uri'
def make_absolute( href, root )
URI.parse(root).merge(URI.parse(href)).to_s
end
Nokogiri::HTML(open(URL)).xpath("//img/@src").each do |src|
uri = make_absolute(src,URL)
File.open(File.basename(uri),'wb'){ |f| f.write(open(uri).read) }
end
您需要指定一个模式 一种方法是(就像google的工作原理一样),您还可以检测所有的锚链接(),并将这些链接添加到队列中(就像在数组中)。完成对当前页面上的图像进行刮削后,将其从阵列中删除,继续到阵列中的下一页,重复相同的过程(查找所有链接,将其推送到阵列,在当前链接上保存图像,从阵列中删除当前链接)。重复此操作,直到数组的长度>0 但也可能有一个问题,比如大型网站的内存问题。因此,您还可以设置时间限制和内存限制。或者对代码本身进行限制。比如将其限制在同一个网站上,并将数组中的最大限制设置为100。如果你正在做的部分,保持记录这些网址,这样你就不会刮他们在未来再次 我建议使用数据库来跟踪被删除的URL