Làm cách nào để tìm nạp tất cả các mục cũ trên nguồn cấp dữ liệu RSS?


117

Tôi đang thử nghiệm viết trình đọc RSS của riêng mình. Tôi có thể xử lý bit "phân tích cú pháp XML". Điều tôi gặp khó khăn là "Làm cách nào để tìm nạp các bài đăng cũ hơn?"

Hầu hết các nguồn cấp RSS chỉ liệt kê 10-25 mục gần đây nhất trong tệp XML của chúng. Làm cách nào để nhận TẤT CẢ các mục trong một nguồn cấp dữ liệu chứ không chỉ những mục gần đây nhất?

Giải pháp duy nhất tôi có thể tìm thấy là sử dụng API Google Reader "không chính thức", sẽ giống như

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

Tôi không muốn làm cho ứng dụng của mình phụ thuộc vào Google Reader.

Có cách nào tốt hơn không? Tôi nhận thấy rằng trên Blogger, tôi có thể làm "? Start-index = 1 & max-results = 1000" và trên WordPress, tôi có thể làm "? Paged = 5". Có cách chung nào để tìm nạp nguồn cấp RSS để nó cung cấp cho tôi mọi thứ chứ không chỉ các mục gần đây nhất không?


1
Đối với những người quan tâm, tài liệu API API người đọc không chính thức: code.google.com/p/google-reader-api/w/list
Nate Parsons

3
Có cách mới kể từ khi câu hỏi được hỏi khoảng 6 năm trước như Feedly liều
Shareef

Tôi rất thích xem câu trả lời cập nhật cho câu hỏi này. Thật thất vọng nếu 8 năm qua vẫn không có gì thay đổi! Đây là sự phát triển mới duy nhất mà tôi đã thấy: app.pub.center stackoverflow.com/questions/5761954/…
Jess Riedel

Câu trả lời:


65

Nguồn cấp dữ liệu RSS / Atom không cho phép truy xuất thông tin lịch sử. Nhà xuất bản của nguồn cấp dữ liệu có cung cấp nó nếu họ muốn, chẳng hạn như trong các ví dụ về blogger hoặc wordpress mà bạn đã cung cấp ở trên.

Lý do duy nhất mà Google Reader có nhiều thông tin hơn là nó đã ghi nhớ nó từ khi xuất hiện lần đầu tiên.

Có một số thông tin về cái gì đó như thế này được nói đến như một phần mở rộng cho giao thức ATOM , nhưng tôi không biết liệu nó có thực sự được triển khai ở bất kỳ đâu.


10

Như các câu trả lời khác ở đây đã đề cập, nguồn cấp dữ liệu có thể không cung cấp dữ liệu lưu trữ nhưng các mục lịch sử có thể có sẵn từ một nguồn khác.

Máy Wayback của Archive.org có API để truy cập nội dung lịch sử, bao gồm cả nguồn cấp RSS (nếu bot của họ đã tải xuống). Tôi đã tạo công cụ web Backfeed sử dụng API này để tạo nguồn cấp dữ liệu có chứa các mục lịch sử được nối. Nếu bạn muốn thảo luận chi tiết về việc triển khai, vui lòng liên hệ.


3
Rất tiếc! Tìm thấy rồi. Liên kết này nêu chi tiết nó ws-dl.blogspot.fr/2013/07/… Cụ thể, bạn sẽ làm điều gì đó giống như web.archive.org/web/timemap/link/$url Cảm ơn!
The1nk

8

Theo kinh nghiệm của tôi với RSS, nguồn cấp dữ liệu được tổng hợp bởi X mục cuối cùng trong đó X là một biến. Một số Nguồn cấp dữ liệu nhất định có thể có danh sách đầy đủ, nhưng vì lợi ích băng thông, hầu hết các nơi có thể chỉ giới hạn ở một vài mục cuối cùng.

Câu trả lời có thể cho người đọc google có thông tin cũ, đó là nó đang lưu trữ thông tin đó ở bên cạnh cho người dùng sau này.


8

Hơn nữa những gì David Dean đã nói, nguồn cấp dữ liệu RSS / Atom sẽ chỉ chứa những gì nhà xuất bản nguồn cấp dữ liệu có tại thời điểm đó và ai đó sẽ cần phải tích cực thu thập thông tin này để có bất kỳ thông tin lịch sử nào. Về cơ bản, Google Reader thực hiện việc này miễn phí và khi bạn tương tác với nó, bạn có thể truy xuất thông tin được lưu trữ này từ máy chủ cơ sở dữ liệu của google.

Bây giờ họ đã ngừng dịch vụ, theo hiểu biết của tôi, bạn có hai lựa chọn. Bạn phải bắt đầu thu thập thông tin này từ nguồn cấp dữ liệu quan tâm của mình và lưu trữ dữ liệu bằng cách sử dụng XML hoặc một số dữ liệu tương tự, hoặc bạn có thể trả tiền cho dữ liệu này từ một trong những công ty bán loại thông tin nguồn cấp dữ liệu lưu trữ này.

Tôi hy vọng thông tin này sẽ giúp ai đó.

Seán


6

Một giải pháp tiềm năng khác có thể không khả dụng khi câu hỏi được đặt ra ban đầu và không yêu cầu bất kỳ dịch vụ cụ thể nào.

  1. Tìm URL của nguồn cấp RSS bạn muốn và sử dụng waybackpack để lấy các url đã lưu trữ cho nguồn cấp đó.
  2. Sử dụng FeedReader hoặc một thư viện tương tự để kéo nguồn cấp RSS đã lưu trữ xuống.
  3. Lấy các URL từ mỗi nguồn cấp dữ liệu và cắt chúng như bạn muốn. Nếu bạn quay ngược thời gian, có thể có một số liên kết chết.

Đây là một gợi ý sáng giá. Máy Wayback thực sự cũng lưu trữ các nguồn cấp RSS. Nó sẽ không hoạt động với trình đọc nguồn cấp dữ liệu GUI, nhưng đối với trình đọc lập trình, không quá khó khăn khi ghi đè yêu cầu web và thay vào đó cung cấp cho nó tệp RSS / Atom đã lưu trong bộ nhớ cache.
Cerin

@Alex, Bạn có thể giải thích bằng một ví dụ không? Tôi thấy đề xuất của bạn rất hấp dẫn.
SanMelkote

2
@SanMelkote Tôi đã không nghĩ đến điều này trong một thời gian dài. Tôi sẽ cố gắng nhớ để tìm hiểu mã của mình và nếu tôi có thể tìm thấy nó, tôi sẽ đăng nó dưới dạng ý chính github.
Alex Klibisz

2

Các tiêu chuẩn RSS / Atom không có cách nào để truy vấn các bài báo RSS cũ hơn.

Tôi cũng đang làm việc trên trình đọc RSS và quyết định xây dựng dịch vụ lưu trữ RSS của riêng mình ( https://app.pub.center ). Sử dụng API REST hoàn toàn miễn phí. Chúng tôi tính tiền cho các thông báo đẩy.

Dịch vụ hàng ngày thăm dò danh mục các nguồn cấp RSS và lưu vào bộ nhớ cache các bài báo. Sau đó, bạn có thể lấy lại các bài báo này theo thứ tự thời gian. Ví dụ:

Trang 1 của Đại Tây Dương https://pub.center/feed/02702624d8a4c825dde21af94e9169773454e0c3/articles?limit=10&page=1

Trang 2 của The Atlantic https://pub.center/feed/02702624d8a4c825dde21af94e9169773454e0c3/articles?limit=10&page=2


Có vẻ thú vị, nhưng liên kết đã chết.
bluenote10

2

Tất cả các câu trả lời trước đó ít nhiều dựa vào các dịch vụ hiện có để vẫn có bản sao của nguồn cấp dữ liệu đó hoặc công cụ nguồn cấp dữ liệu để có thể cung cấp động các mặt hàng cũ hơn.

Tuy nhiên, có một cách khác, được thừa nhận là chủ động và khá lý thuyết để làm như vậy: Cho phép trình đọc nguồn cấp dữ liệu của bạn sử dụng proxy bộ nhớ đệm để hiểu ngữ nghĩa nguồn cấp dữ liệu RSS và / hoặc Atom và lưu trữ chúng trên cơ sở mỗi mục lên đến nhiều mục như bạn định cấu hình.

Nếu trình đọc nguồn cấp dữ liệu không thăm dò nguồn cấp dữ liệu một cách thường xuyên, proxy có thể tự tìm nạp các nguồn cấp dữ liệu đã biết dựa trên thời gian để không bỏ lỡ một mục trong các nguồn cấp dữ liệu dễ bay hơi như từ Nguồn cấp dữ liệu thân thiện với người dùng chỉ có một mục và thay đổi hàng ngày (hoặc ít nhất đã từng làm như vậy). Do đó, nếu feedreadere.g. sự cố hoặc mất kết nối mạng khi bạn vắng nhà trong vài ngày, bạn có thể mất các mục trong bộ nhớ cache của trình đọc nguồn cấp dữ liệu của mình. Việc có proxy để tìm nạp các nguồn cấp dữ liệu đó một cách thường xuyên (ví dụ: từ trung tâm dữ liệu thay vì ở nhà hoặc trên máy chủ thay vì máy tính xách tay) cho phép bạn dễ dàng chạy trình đọc nguồn cấp dữ liệu chỉ khi đó và khi nào mà không làm mất các mục đã được đăng sau khi trình đọc nguồn cấp dữ liệu của bạn đã tìm nạp nguồn cấp dữ liệu lần trước nhưng lại xoay ra trước khi bạn tìm nạp chúng vào lần tiếp theo.

Tôi gọi khái niệm đó là Proxy nguồn cấp ngữ nghĩa và tôi đã triển khai một bằng chứng về việc triển khai khái niệm được gọi là sfp . Nó mặc dù không nhiều hơn một bằng chứng về khái niệm và tôi chưa phát triển nó thêm. (Vì vậy, tôi rất vui về các gợi ý cho các dự án có ý tưởng hoặc mục đích tương tự. :-)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.