2009-11-04 36 views
6

Tôi đang sử dụng thư viện feedparser trong python để truy xuất tin tức từ một tờ báo địa phương (ý định của tôi là thực hiện xử lý ngôn ngữ tự nhiên trong kho này) và muốn có thể truy xuất nhiều quá khứ các mục từ nguồn cấp dữ liệu RSS.Feedparser - truy xuất thư cũ từ Google Reader

Tôi không quen với các vấn đề kỹ thuật của RSS, nhưng tôi nghĩ điều này có thể xảy ra (tôi có thể thấy rằng, Google Reader và Feedly có thể thực hiện điều này '' theo yêu cầu '' khi tôi di chuyển thanh cuộn).

Khi tôi làm như sau:

import feedparser 

url = 'http://feeds.folha.uol.com.br/folha/emcimadahora/rss091.xml' 
feed = feedparser.parse(url) 
for post in feed.entries: 
    title = post.title 

tôi nhận được chỉ có vài chục mục hoặc lâu hơn. Tôi đã suy nghĩ về hàng trăm. Có thể tất cả các mục trong tháng trước, nếu có thể. Có thể làm điều này chỉ với feedparser?

Tôi dự định nhận từ nguồn cấp dữ liệu rss chỉ liên kết đến mục tin tức và phân tích trang đầy đủ với BeautifulSoup để nhận văn bản tôi muốn. Một giải pháp thay thế sẽ là một trình thu thập thông tin theo sau tất cả các liên kết cục bộ trong trang để nhận được nhiều mục tin tức, nhưng tôi muốn tránh điều đó ngay bây giờ.

-

Một giải pháp mà xuất hiện là sử dụng bộ nhớ cache Google Reader RSS:

http://www.google.com/reader/atom/feed/http://feeds.folha.uol.com.br/folha/emcimadahora/rss091.xml?n=1000

Nhưng để truy cập này, tôi phải đăng nhập vào Google Reader. Bất cứ ai cũng biết làm thế nào tôi làm điều đó từ python? (Tôi thực sự không biết gì về web, tôi thường chỉ lộn xộn với tính toán số).

Trả lời

9

Bạn chỉ nhận được hàng tá mục nhập hoặc vì đó là nguồn cấp dữ liệu. Nếu bạn muốn dữ liệu lịch sử, bạn sẽ phải tìm một nguồn cấp dữ liệu/cơ sở dữ liệu của dữ liệu đã nói.

Khám phá ReadWriteWeb article này để biết một số tài nguyên về tìm dữ liệu mở trên web.

Lưu ý rằng Feedparser không liên quan gì đến điều này như tiêu đề của bạn đề xuất. Feedparser phân tích cú pháp những gì bạn cung cấp cho nó. Nó không thể tìm thấy dữ liệu lịch sử trừ khi bạn tìm thấy nó và chuyển nó vào nó. Nó chỉ đơn giản là một trình phân tích cú pháp. Hi vọng mọi thứ đều bị xóa sạch! :)

+0

Cảm ơn một lần nữa Bartek. Tôi nghĩ bây giờ tôi đã hiểu rõ hơn. Vậy RSS đơn giản là một tệp xml được lưu trữ trong máy chủ? Tôi đã có hình ảnh sai về nó ... nghĩ rằng đó là một loại '' giao thức '' để có được một nguồn cấp dữ liệu văn bản. Cảm ơn bạn lần nữa. –

3

Để mở rộng câu trả lời của Bartek: Bạn cũng có thể bắt đầu lưu trữ tất cả các mục nhập trong nguồn cấp dữ liệu mà bạn đã xem và xây dựng lưu trữ lịch sử của riêng bạn về nội dung của nguồn cấp dữ liệu. Điều này sẽ làm chậm khả năng của bạn bắt đầu sử dụng nó như một kho dữ liệu (vì bạn phải làm điều này trong một tháng để xây dựng một tập hợp các giá trị của một tháng), nhưng bạn sẽ không phụ thuộc vào bất cứ ai khác cho dữ liệu .

Tôi có thể bị nhầm lẫn, nhưng tôi khá chắc chắn đó là cách Google Reader có thể quay ngược thời gian: Chúng có các mục nhập trong quá khứ của từng nguồn cấp dữ liệu được lưu trữ ở đâu đó.

+0

Hummm ... Tôi đoán cách để đi sau đó là lấy nguồn cấp dữ liệu từ Google Reader, có thể? –

+1

Dường như bản thân Google Reader có thể được sử dụng để truy xuất danh sách các mục lịch sử! : D http://googlesystem.blogspot.com/2007/06/reconstruct-feeds-history-using-google.html –

+0

Tôi vừa phát hiện ra điều này. Dưới đây là 100 mục cuối cùng trong nguồn cấp dữ liệu mà bạn quan tâm: http://www.google.com/reader/atom/feed/http://feeds.folha.uol.com.br/folha/emcimadahora/rss091. xml?n = 1000 –