ฉันจะดึงรายการเก่าทั้งหมดบน RSS Feed ได้อย่างไร


117

ฉันได้ทดลองเขียนโปรแกรมอ่าน RSS ของตัวเอง ฉันจัดการบิต "แยกวิเคราะห์ XML" ได้ สิ่งที่ฉันติดขัดคือ "ฉันจะดึงโพสต์เก่า ๆ ได้อย่างไร"

ฟีด RSS ส่วนใหญ่จะแสดงรายการล่าสุด 10-25 รายการในไฟล์ XML เท่านั้น ฉันจะรับรายการทั้งหมดในฟีดได้อย่างไรไม่ใช่แค่รายการล่าสุดเท่านั้น

ทางออกเดียวที่ฉันพบคือใช้ Google Reader API "ไม่เป็นทางการ" ซึ่งจะเป็นอย่างไร

http://www.google.com/reader/atom/feed/http://fskrealityguide.blogspot.com/feeds/posts/default?n=1000

ฉันไม่ต้องการให้แอปพลิเคชันของฉันขึ้นอยู่กับ Google Reader

มีวิธีไหนที่ดีกว่านี้ไหม? ฉันสังเกตเห็นว่าใน Blogger ฉันสามารถทำ "? start-index = 1 & max-results = 1000" และบน WordPress ฉันสามารถทำได้ "? paged = 5" มีวิธีการทั่วไปในการดึงฟีด RSS เพื่อให้ฉันได้ทุกอย่างไม่ใช่แค่รายการล่าสุดเท่านั้น?


1
สำหรับผู้ที่สนใจเอกสาร Unofficial Reader API: code.google.com/p/google-reader-api/w/list
Nate Parsons

3
มีวิธีใหม่หรือไม่เนื่องจากคำถามถูกถามเมื่อ 6 ปีที่แล้วเช่น Feedly dose
shareef

ฉันชอบที่จะเห็นคำตอบที่อัปเดตสำหรับคำถามนี้ น่าเสียดายมากถ้าไม่มีอะไรเปลี่ยนแปลงใน 8 ปี! นี่เป็นเพียงการพัฒนาใหม่ที่ฉันได้เห็น: app.pub.center stackoverflow.com/questions/5761954/…
Jess Riedel

คำตอบ:


65

ฟีด RSS / Atom ไม่อนุญาตให้ดึงข้อมูลประวัติ ขึ้นอยู่กับผู้เผยแพร่ฟีดที่จะระบุหากต้องการเช่นในบล็อกเกอร์หรือตัวอย่างเวิร์ดเพรสที่คุณให้ไว้ข้างต้น

เหตุผลเดียวที่ Google Reader มีข้อมูลมากขึ้นก็คือการจำข้อมูลนี้มาจากครั้งแรก

มีข้อมูลบางอย่างเกี่ยวกับสิ่งนี้ที่พูดถึงเป็นส่วนขยายของโปรโตคอล ATOMแต่ฉันไม่รู้ว่ามันถูกนำไปใช้จริงหรือไม่


10

ดังคำตอบอื่น ๆ ที่กล่าวถึงในที่นี้ฟีดอาจไม่ให้ข้อมูลที่เก็บถาวร แต่อาจมีรายการประวัติจากแหล่งอื่น

Wayback Machine ของ Archive.org มี API สำหรับเข้าถึงเนื้อหาในอดีตรวมถึง RSS feeds (หากบอทของพวกเขาดาวน์โหลดมาแล้ว) ฉันได้สร้างBackfeed ของเครื่องมือเว็บที่ใช้ API นี้เพื่อสร้างฟีดที่มีรายการประวัติที่ต่อกัน หากคุณต้องการหารือเกี่ยวกับการใช้งานโดยละเอียดโปรดติดต่อกลับ


3
อ๊ะ! พบแล้ว ลิงค์นี้ให้รายละเอียดว่าws-dl.blogspot.fr/2013/07/…โดยเฉพาะคุณจะทำอะไรเช่นนี้web.archive.org/web/timemap/link/$urlขอบคุณ!
The1nk

8

จากประสบการณ์ของฉันกับ RSS ฟีดจะรวบรวมโดยรายการ X สุดท้ายโดยที่ X เป็นตัวแปร ฟีดบางรายการอาจมีรายการทั้งหมด แต่สำหรับแบนด์วิดท์สถานที่ส่วนใหญ่มักจะ จำกัด เพียงไม่กี่รายการสุดท้าย

คำตอบที่เป็นไปได้สำหรับผู้อ่านของ Google ที่มีข้อมูลเก่าคือมันกำลังจัดเก็บข้อมูลไว้ที่ด้านข้างสำหรับผู้ใช้ในภายหลัง


8

นอกเหนือจากสิ่งที่ David Dean กล่าวว่าฟีด RSS / Atom จะมีเฉพาะสิ่งที่ผู้เผยแพร่ฟีดมีอยู่ในขณะนั้นและใครบางคนจะต้องรวบรวมข้อมูลนี้อย่างแข็งขันเพื่อให้มีข้อมูลในอดีต โดยทั่วไป Google Reader ทำสิ่งนี้ได้ฟรีและเมื่อคุณโต้ตอบกับมันคุณสามารถดึงข้อมูลที่เก็บไว้นี้จากเซิร์ฟเวอร์ฐานข้อมูลของ Google

ตอนนี้พวกเขาออกจากราชการแล้วคุณมีทางเลือกสองทางตามความรู้ของฉัน คุณต้องเริ่มรวบรวมข้อมูลนี้จากฟีดที่คุณสนใจและจัดเก็บข้อมูลโดยใช้ XML หรือบางส่วนหรือคุณอาจจ่ายเงินสำหรับข้อมูลนี้จาก บริษัท ที่ขายข้อมูลฟีดที่เก็บถาวรประเภทนี้

ฉันหวังว่าข้อมูลนี้จะช่วยใครสักคน

Seán


6

อีกวิธีหนึ่งที่เป็นไปได้ที่อาจไม่มีให้ใช้งานเมื่อคำถามถูกถามในตอนแรกและไม่ควรต้องการบริการเฉพาะใด ๆ

  1. ค้นหา URL ของฟีด RSS ที่คุณต้องการและใช้waybackpackเพื่อรับ URL ที่เก็บถาวรสำหรับฟีดนั้น
  2. ใช้FeedReaderหรือไลบรารีที่คล้ายกันเพื่อดึงฟีด RSS ที่เก็บถาวร
  3. ใช้ URL จากแต่ละฟีดและขูดตามที่คุณต้องการ หากคุณย้อนเวลากลับไปอาจเป็นไปได้ว่าอาจมีลิงก์ที่ไม่สมบูรณ์

นี่เป็นคำแนะนำที่ยอดเยี่ยม Wayback Machine จะเก็บฟีด RSS ด้วยเช่นกัน จะใช้ไม่ได้กับโปรแกรมอ่านฟีด GUI แต่สำหรับโปรแกรมอ่านแบบเป็นโปรแกรมจะไม่มีปัญหามากเกินไปในการแทนที่คำขอของเว็บและป้อนไฟล์ RSS / Atom ที่แคชไว้แทน
Cerin

@ อเล็กซ์คุณช่วยอธิบายอย่างละเอียดได้ไหม? ฉันพบว่าข้อเสนอแนะของคุณน่าสนใจมาก
SanMelkote

2
@SanMelkote ฉันไม่ได้คิดถึงเรื่องนี้มานานแล้ว ฉันจะพยายามอย่าลืมขุดโค้ดของฉันและถ้าฉันสามารถหาได้ฉันจะโพสต์เป็น github gist
Alex Klibisz

2

มาตรฐาน RSS / Atom ไม่มีวิธีสืบค้นบทความ RSS ที่เก่ากว่า

ฉันกำลังทำงานกับโปรแกรมอ่าน RSS และตัดสินใจที่จะสร้างบริการเก็บถาวร RSS ของฉันเอง ( https://app.pub.center ) ใช้ REST API ได้ฟรี เราเรียกเก็บเงินสำหรับการแจ้งเตือนแบบพุช

บริการสำรวจรายวันเป็นแคตตาล็อกของ RSS feeds และแคชบทความ จากนั้นคุณจะได้รับบทความเหล่านี้กลับมาตามลำดับเวลา ตัวอย่างเช่น:

หน้า 1 ของมหาสมุทรแอตแลนติก https://pub.center/feed/02702624d8a4c825dde21af94e9169773454e0c3/articles?limit=10&page=1

หน้า 2 ของมหาสมุทรแอตแลนติก https://pub.center/feed/02702624d8a4c825dde21af94e9169773454e0c3/articles?limit=10&page=2


ดูน่าสนใจ แต่ลิงค์ตาย
bluenote10

2

คำตอบก่อนหน้านี้ทั้งหมดขึ้นอยู่กับบริการที่มีอยู่เพื่อให้ยังคงมีสำเนาของฟีดนั้นหรือกลไกฟีดเพื่อให้สามารถจัดเตรียมรายการเก่า ๆ ได้แบบไดนามิก

แม้ว่าจะมีวิธีอื่นที่เป็นเชิงรุกและเป็นที่ยอมรับในเชิงทฤษฎี: ให้ผู้อ่านฟีดของคุณใช้พร็อกซีการแคชซึ่งเข้าใจความหมาย RSS และ / หรือฟีด Atom และแคชไว้บนฐานต่อรายการได้มากถึงหลายรายการตามที่คุณกำหนดค่า

หากโปรแกรมอ่านฟีดไม่ทำการสำรวจฟีดอย่างสม่ำเสมอพร็อกซีสามารถดึงเวลาของฟีดที่รู้จักโดยอิงจากตัวมันเองเพื่อไม่ให้พลาดรายการในฟีดที่มีความผันผวนสูงเช่นรายการจาก User Friendly ซึ่งมีเพียงรายการเดียวและเปลี่ยนแปลงทุกวัน (หรืออย่างน้อยที่สุด เคยทำเช่นนั้น) ดังนั้นถ้า feedreadere g. การเชื่อมต่อเครือข่ายขัดข้องหรือขาดหายในขณะที่คุณไม่อยู่เป็นเวลาสองสามวันคุณอาจหลวมรายการต่างๆในแคชของโปรแกรมอ่านฟีด การมีพร็อกซีเพื่อดึงข้อมูลฟีดเหล่านั้นอย่างสม่ำเสมอ (เช่นจากศูนย์ข้อมูลแทนจากที่บ้านหรือบนเซิร์ฟเวอร์แทนแล็ปท็อป) ช่วยให้คุณสามารถเรียกใช้โปรแกรมอ่านฟีดได้อย่างง่ายดายในเวลานั้นและเมื่อไม่สูญเสียรายการที่โพสต์หลังจากที่ตัวอ่านฟีดของคุณดึงฟีด ครั้งสุดท้าย แต่หมุนออกอีกครั้งก่อนที่คุณจะดึงมาในครั้งต่อไป

ที่ผมเรียกว่าแนวคิดความหมายของฟีดร็อกซี่และฉันได้ดำเนินการพิสูจน์แนวคิดของการดำเนินงานที่เรียกว่า SFP แม้ว่าจะไม่มากไปกว่าการพิสูจน์แนวคิดและฉันก็ไม่ได้พัฒนาต่อไป (ดังนั้นฉันยินดีที่จะบอกใบ้โครงการที่มีแนวคิดหรือวัตถุประสงค์คล้าย ๆ กัน :-)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.