当前位置:首页 / 网页制作 / XML和XSLT教程 / 使用Ruby和Nokogiri模拟爬虫导出RSS种子的实例介绍
使用Ruby和Nokogiri模拟爬虫导出RSS种子的实例介绍
芯晴素材特效 分类:XML和XSLT教程 发布日期:2018-05-08
# encoding: utf-8
require 'thread'
require 'nokogiri'
require 'open-uri'
require 'rss/maker'
  
$result=Queue.new
def extract_readme_header(no,name,url)
  frame = Nokogiri::HTML(open(url))
  return unless frame
  readme=$url+frame.css('frame')[1]['src']
  return unless readme
  open(readme) do |f|
    doc = Nokogiri::HTML(f.read)
    text=doc.css("p#content p#filecontents p")[0..4].map { |c| c.content }.join(" ").strip
    return if text.length==0
    if text !~ /(rails)|(activ_)/i
      puts "========= #{no} #{name} : #{text[0..50]}"
      date = f.last_modified
      $result << [no,name,readme,date,text]
    end
  end
rescue
  puts $!.to_s
end
  
def make_rss(items)
  RSS::Maker.make("2.0") do |m|
    m.channel.title = "GtitHub recently updated projects"
    m.channel.link = "http://localhost"
    m.channel.description = "GitHub recently updated projects"
    m.items.do_sort = true
    items.each do |no,name,url,date,descr|
      i = m.items.new_item
      i.title = name
      i.link = url
      i.description=descr
      i.date = date
    end
  end
end
  
############################## M A I N ########################
  
############# Scan list of recent project
  
lth=[]
$url="http://rdoc.info"
puts "get url #{$url}..."
doc = Nokogiri::HTML(open($url))
doc.css('ul.libraries')[1].css('li').each_with_index do |li,i|
  aname =li.css('a').first
  name=aname.content
  purl=$url+aname['href']
  lth << Thread.new(i,name,purl) { |j,n,u| extract_readme_header(j,n,u)  }
end
  
################ wait all readme are read
  
lth.each { |th| th.join() }
  
################ dequeue results and sort them by date descending
  
result=[]
result << $result.shift while $result.size>0
result.sort!  { |a,b| a[0] <=> b[0] }
  
  
################ format results in rss
  
File.open("RubyFeeds.rss","w") do |file|
  file.write make_rss(result)
end

版权信息:本站所有资源仅供学习与参考,请勿用于商业用途,如有侵犯您的版权,请及时联系821794221#qq.com(#换@),我们将尽快处理。

您可能在找这些

  • 内容标签:

热门素材

一款漂亮的蓝色风格CSS竖向菜单

2013-01-06   浏览:8009

漂亮的JS滑动门式图片自动切换效果

2013-01-14   浏览:9505

音乐专辑推荐展示JS网页下载

2017-03-12   浏览:217

jq多图图片通栏切换网页下载

2017-03-15   浏览:346

jq双重滚动效果

2017-03-19   浏览:337

html5酒店预订日期选择手机日历

2017-03-14   浏览:500

jq二维码生成插件

2017-03-19   浏览:146

表单效果之输入框随鼠标点击换色

2013-01-03   浏览:8126

jq左右透明遮罩图片切换网页下载

2017-03-15   浏览:186

HTML5手机登录注册表单网页下载

2017-03-14   浏览:345

[酷] 模仿Windows飞行视窗的登陆框

2012-12-31   浏览:8245

jQuery可自定义高度图片瀑布流网页下载

2017-03-14   浏览:101