


Detailliertes Beispiel für die Verwendung von Ruby und Nokogiri zur Simulation von Crawlern zum Exportieren von RSS-Seeds
May 02, 2017 am 09:42 AM# 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
Das obige ist der detaillierte Inhalt vonDetailliertes Beispiel für die Verwendung von Ruby und Nokogiri zur Simulation von Crawlern zum Exportieren von RSS-Seeds. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Wie implementiert man mit C++ ein einfaches Webcrawler-Programm?

PHP-Anwendung: Erhalten Sie RSS-Abonnementinhalte über die Funktion

Wie nutzt Ruby die MySQL2-Verbindung, um MySQL zu betreiben?

Warum haben Python, Ruby und andere Sprachen den Inkrementoperator abgelehnt?

Wie man PHP und XML verwendet, um die RSS-Abonnementverwaltung und -anzeige auf der Website zu implementieren

Eingehende Analyse der Ähnlichkeiten und Unterschiede zwischen Golang und Ruby

So schreiben Sie einen einfachen RSS-Abonnenten über PHP

So implementieren Sie mit MySQL und Ruby eine einfache Datenanalyse-Berichtsfunktion
