Heim Backend-Entwicklung XML/RSS-Tutorial Detailliertes Beispiel für die Verwendung von Ruby und Nokogiri zur Simulation von Crawlern zum Exportieren von RSS-Seeds

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
Nach dem Login kopieren

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie implementiert man mit C++ ein einfaches Webcrawler-Programm? Wie implementiert man mit C++ ein einfaches Webcrawler-Programm? Nov 04, 2023 am 11:37 AM

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

PHP-Anwendung: Erhalten Sie RSS-Abonnementinhalte über die Funktion PHP-Anwendung: Erhalten Sie RSS-Abonnementinhalte über die Funktion Jun 20, 2023 pm 06:25 PM

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

Wie nutzt Ruby die MySQL2-Verbindung, um MySQL zu betreiben? Wie nutzt Ruby die MySQL2-Verbindung, um MySQL zu betreiben? Apr 17, 2023 pm 10:07 PM

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

Warum haben Python, Ruby und andere Sprachen den Inkrementoperator abgelehnt? Warum haben Python, Ruby und andere Sprachen den Inkrementoperator abgelehnt? May 11, 2023 pm 04:37 PM

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 Wie man PHP und XML verwendet, um die RSS-Abonnementverwaltung und -anzeige auf der Website zu implementieren Jul 29, 2023 am 10:09 AM

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 Eingehende Analyse der Ähnlichkeiten und Unterschiede zwischen Golang und Ruby Jun 01, 2024 pm 08:46 PM

Eingehende Analyse der Ähnlichkeiten und Unterschiede zwischen Golang und Ruby

So schreiben Sie einen einfachen RSS-Abonnenten über PHP So schreiben Sie einen einfachen RSS-Abonnenten über PHP Sep 25, 2023 pm 07:05 PM

So schreiben Sie einen einfachen RSS-Abonnenten über PHP

So implementieren Sie mit MySQL und Ruby eine einfache Datenanalyse-Berichtsfunktion So implementieren Sie mit MySQL und Ruby eine einfache Datenanalyse-Berichtsfunktion Sep 20, 2023 pm 05:09 PM

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

See all articles