2012-02-18 3 views
1

Для проекта, я хочу использовать feedparser. В основном я получил его работу.Force feedparser для дезинфекции всех типов контента

В документации section about sanitization описано, что не все типы содержимого дезинфицируются. Как я могу заставить feedparser делать это во всех типах контента?

+0

Вы точно этого хотите? Feedparser довольно строг на том, что он позволяет. Это белые списки, а не черные списки, чтобы быть уверенным, что разрешены только безопасные вещи. Что вы волнуетесь, все пройдет? – fitzgeraldsteele

+0

В документации говорится, что тип контента «текст/обычная» не дезинфицирован, поэтому я должен сделать это самостоятельно, если я хочу иметь безопасный контент. Но было бы неплохо, если бы кормушка могла это сделать. – Martin

ответ

1

Я думаю, что документ страница feedparser вы ссылка дает хороший совет:

* Рекомендуется проверять тип содержимого в, например, записи [я] .summary_detail.type. Если текст/равнина, то она не было продезинфицировать (и вы должны выполнить HTML вытекающий перед отображением контента). *

import cgi 
import feedparser 

d = feedparser.parse('http://rss.slashdot.org/Slashdot/slashdot') 

# iterate through entries. If the type is not text/html, HTML clean it 
for entry in d.entries: 
    if entry.summary_detail.type != 'text/html': 
     print cgi.escape(entry.summary) 
else: 
    print entry.summary 

Конечно, есть множество способов, вы можете перебирать записи в зависимости от того, что вы хотите сделать с ними, как только они станут чистыми.

+0

Чтобы получить его еще больше, я посмотрел код feedparser. Кажется, что только text/html действительно дезинфицирован, поэтому я проверяю, не является ли тип text/html, а затем самостоятельно дезинфицирует. Но, кроме этой детали, ваш ответ абсолютно верен. – Martin

Смежные вопросы