मुझे हजारों फ़ीड और प्रदर्शन की आवश्यकता है एक आवश्यक आवश्यकता है। क्या तुम्हारे पास कोई सुझाव है?रेल पर रूबी के साथ उच्च प्रदर्शन आरएसएस/एटम पार्सिंग
अग्रिम धन्यवाद!
मुझे हजारों फ़ीड और प्रदर्शन की आवश्यकता है एक आवश्यक आवश्यकता है। क्या तुम्हारे पास कोई सुझाव है?रेल पर रूबी के साथ उच्च प्रदर्शन आरएसएस/एटम पार्सिंग
अग्रिम धन्यवाद!
मैं इसे करने की कोशिश नहीं की है, लेकिन मैं हाल ही में Feedzirra के बारे में पढ़ा है (यह प्रदर्शन के लिए बनाया जा करने का दावा): -
Feedzirra एक फ़ीड पुस्तकालय है कि है लिए बनाया गया है जितनी जल्दी हो सके कई फीड प्राप्त करने और अपडेट करने के लिए। के माध्यम से libcurl-multi का उपयोग करके तेज़ http, और तेजी से पार्सिंग के लिए sax-machine के माध्यम से nxogiri और के लिए libxml।
प्रदर्शन के बारे में सुनिश्चित नहीं हैं, लेकिन एक समान प्रश्न Parsing Atom & RSS in Ruby/Rails?
में उत्तर दिया गया तुम भी Hpricot, जो XML पार्स करता है लेकिन मान लिया गया है उसकी रचना है और किसी भी सत्यापन नहीं करता है कि इस पर गौर कर सकते हैं।
http://wiki.github.com/why/hpricot http://wiki.github.com/why/hpricot/hpricot-xml
आप (प्रसिद्ध) पायथन यूनिवर्सल फीडपार्सर के रूबी-पोर्ट, आरएफआईडीपार्सर का उपयोग कर सकते हैं। यह हैप्रिकॉट पर आधारित है, और यह वास्तव में तेज़ और उपयोग करने में आसान है।
http://rfeedparser.rubyforge.org/
एक उदाहरण:
require 'rubygems'
require 'rfeedparser'
require 'open-uri'
feed = FeedParser::parse(open('http://feeds.feedburner.com/engadget'))
feed.entries.each do |entry|
puts entry.title
end
जब आपके पास एक हथौड़ा है, सब कुछ एक कील की तरह लग रहा है। इसके लिए रुबी के अलावा किसी अन्य समाधान पर विचार करें। हालांकि मुझे रूबी और रेल से प्यार है और वेब विकास के लिए या शायद डोमेन विशिष्ट भाषा के लिए उनके साथ हिस्सा नहीं लेना चाहिए, मैं जावा में किए गए प्रकार या शायद पायथन या यहां तक कि सी ++ में भारी डेटा उठाना पसंद करता हूं।
यह देखते हुए कि इस पार्स किए गए डेटा का गंतव्य डेटाबेस है, यह आपके समाधान के रेल भाग और अन्य भाषा भाग के बीच सामान्य बिंदु के रूप में कार्य कर सकता है। फिर आप अपनी प्रत्येक समस्या को हल करने के लिए सबसे अच्छा टूल का उपयोग कर रहे हैं और परिणाम संभवतः काम करने के लिए आसान है और वास्तव में आपकी आवश्यकताओं को पूरा करता है।
यदि गति वास्तव में सार का है, तो वहां एक अतिरिक्त बाधा क्यों जोड़ें और कहें, "ओह, जब तक मैं रुबी का उपयोग करता हूं तब तक यह केवल सार का सार है।"
शुरुआत में मैंने कुछ मूल एक्सएमएल पार्सिंग करने के लिए नोकोगिरी का उपयोग किया, लेकिन यह धीमा और अनियमित था (कभी-कभी) मैं feedzirra पर स्विच करता था और न केवल एक शानदार प्रदर्शन बढ़ावा था, इसमें कोई त्रुटि नहीं थी और यह पाई जितनी आसान थी। उदाहरण दिखाया नीचे
# fetching a single feed
feed = Feedzirra::Feed.fetch_and_parse("http://feeds.feedburner.com/PaulDixExplainsNothing")
# feed and entries accessors
feed.title # => "Paul Dix Explains Nothing"
feed.url # => "http://www.pauldix.net"
feed.feed_url # => "http://feeds.feedburner.com/PaulDixExplainsNothing"
feed.etag # => "GunxqnEP4NeYhrqq9TyVKTuDnh0"
feed.last_modified # => Sat Jan 31 17:58:16 -0500 2009 # it's a Time object
entry = feed.entries.first
entry.title # => "Ruby Http Client Library Performance"
entry.url # => "http://www.pauldix.net/2009/01/ruby-http-client-library-performance.html"
entry.author # => "Paul Dix"
entry.summary # => "..."
entry.content # => "..."
entry.published # => Thu Jan 29 17:00:19 UTC 2009 # it's a Time object
entry.categories # => ["...", "..."]
अगर आप निम्नलिखित पर्याप्त होगा
source = Feedzirra::Feed.fetch_and_parse(http://www.feed-url-you-want-to-play-with.com)
puts "Parsing Downloaded XML....\n\n\n"
source.entries.each do |entry|
begin
puts "#{entry.summary} \n\n"
cleanURL = (entry.url).gsub("+","%2B") #my own sanitization process, ignore
scrapArticleWithURL(cleanURL)
rescue
puts "(****)there has been an error fetching (#{entry.title}) \n\n"
end
Hpricot एक HTML पार्सर है अधिक उन्हें पार्स करने उदाहरण के लिए, फ़ीड के साथ क्या करना चाहते हैं :( – collimarco
एचटीएमएल एक्सएमएल का एक सबसेट है , और Hpricot इसे पार्स कर सकते हैं। बहुत से लोग सामान्य एक्सएमएल पार्स करने के लिए Hpricot का उपयोग करें। –
http://wiki.github.com/why/hpricot/hpricot-xml –