使用Ruby和Nokogiri模拟爬虫导出RSS种子的实例详解
# 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("div#content div#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
以上是使用Ruby和Nokogiri模拟爬虫导出RSS种子的实例详解的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

如何利用C++实现一个简单的网页爬虫程序?简介:互联网是一个信息的宝库,而通过网页爬虫程序可以轻松地从互联网上获取大量有用的数据。本文将介绍如何使用C++编写一个简单的网页爬虫程序,以及一些常用的技巧和注意事项。一、准备工作安装C++编译器:首先需要在计算机上安装一个C++编译器,例如gcc或者clang。可以通过命令行输入"g++-v"或者"clang

Go与Ruby的主要区别在于:Go是一种静态类型编译语言,支持轻量级并行和高效内存管理,适合编写高并发应用程序;Ruby是一种动态类型解释语言,支持真正的并行但内存管理需手动控制,适合编写灵活的Web应用程序。

如何用PHP和XML实现网站的RSS订阅管理和显示RSS(ReallySimpleSyndication)是一种用于发布经常更新的博客文章、新闻、音频和视频等内容的标准格式。许多网站都提供了RSS订阅功能,使用户可以方便地获取最新的信息。在本文中,我们将学习如何使用PHP和XML来实现网站的RSS订阅管理和显示功能。首先,我们需要创建一个RSS订阅的XM

许多人也许会注意到一个现象,那就是在一些现代编程语言(当然,并不是指“最近出现”的编程语言)中,自增和自减运算符被取消了。也就是说,在这些语言中不存在i++或j--这样的表达,而是只存在i+=1或j-=1这样的表达方式了。本回答将从设计哲学这个角度上探讨这一现象产生的背景与原因。严格来说,说"i++正在消失"也许有失偏颇,因为主流编程语言中似乎只有Python、Rust和Swift不支持自增自减运算符。当我第一次接触Python时,这也

随着互联网的迅速发展,越来越多的网站开始提供RSS订阅服务,使得用户可以方便地获取网站更新的内容。而PHP作为一种流行的服务端脚本语言,有着许多用于处理RSS订阅的函数,使得开发人员可以轻松地从RSS源中提取需要的数据。本篇文章将介绍如何使用PHP函数获取RSS订阅内容。一、什么是RSS?RSS全名为“ReallySimpleSyndication”(简

Ruby操作MySQL使用mysql2连接mysql并操作mysql。geminstallmysql2连接mysql建立连接:require'mysql2'conn=Mysql2::Client.new({host:'192.168.200.73',username:'root',password:'P@ssword1!'})接受的连接选项包括:Mysql2::Clie

如何通过PHP编写一个简单的RSS订阅器RSS(ReallySimpleSyndication)是一种用于订阅网站内容的格式,通过订阅器可以获取到最新的文章、新闻和博客等更新。在本文中,我们将使用PHP编写一个简单的RSS订阅器来演示如何获取和显示RSS源的内容。确认环境和准备工作在开始之前,确保你已经有一个PHP环境,并且已经安装了SimpleXML扩

如何使用MySQL和Ruby实现一个简单的数据转换功能在实际的开发工作中,经常需要进行数据转换,将一个数据格式转化为另一个数据格式。本文将介绍如何使用MySQL和Ruby来实现一个简单的数据转换功能,并且提供具体的代码示例。首先,我们需要安装并配置MySQL和Ruby环境。确保已经安装了MySQL数据库,并可以通过命令行或其他工具连接到数据库。另外,需要安装
