Скрипт Python / feedparser не будет отображаться при CGI / кодировании символов

1
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
import os
import cgi
import string
import feedparser

count = 0
print "Content-Type: text/html\n\n"
print """<PRE><B>WORK MAINTENANCE/B></PRE>"""


d = feedparser.parse("http://www.hep.hr/ods/rss/radovi.aspx?dp=zagreb")


for opis in d:
    try:
          print """<B>Place/Time:</B> %s<br>""" % d.entries[count].title
          print """<B>Streets:</B> %s<br>""" % d.entries[count].description
          print """<B>Published:</B> %s<br>""" % d.entries[count].date
          print "<br>"
          count+= 1
    except:
        pass

У меня проблема с CGI и paython script. Под терминалом script выполняется просто отлично, за исключением "IndexError: индекс индекса вне диапазона", и я положил для этого пропуск. Но когда я запускаю script через CGI, я получаю только строку WORK MAINTENANCE и первую строку из d.entries [count].title, повторенную 9 раз? Так запутанно...

Также как я могу настроить поддержку в файле feedparser для писем Croation (балканских); č, ć, š, ž, đ?  # - кодирование: utf-8 - не работает, и я запускаю сервер Ubuntu.

Заранее спасибо за помощь.

С уважением.

Теги:
cgi
character-encoding
feedparser

2 ответа

0
Лучший ответ
for opis in d:
    try:
          print """<B>Place/Time:</B> %s<br>""" % d.entries[count].title

Вы не используете "opis" в своем выпуске.

Попробуйте что-то вроде этого:

for entry in d.entries:
    try:
        print """<B>Place/Time:</B> %s<br>""" % entry.title
        ....
  • 0
    Я поставил как вам грустно, но все равно он не работает, скрипт работает в одиночку (без ошибок с вашей модификацией :)), но при использовании через CGI он отображает только первую строку? Любое предложение?
  • 0
    Итак, я думаю, что нашел проблему, CGI не может печатать мои хорватские буквы ć, č, š, ž, and, и именно поэтому сценарий ломается. Как настроить поддержку этих писем в python / ubuntu?
Показать ещё 3 комментария
0

У Oke была другая проблема, текст, который я вводил вручную, будет отображаться на CGI, но веб-страницы RSS не будут. Поэтому вам нужно закодировать, прежде чем писать:

# -*- coding: utf-8 -*-
import sys, os, string
import cgi
import feedparser
import codecs

d = blablablabla

print "Content-Type: text/html; charset=utf-8\n\n"
print

for entry in d.entries:
    print """%s""" % entry.title.encode('utf-8')

Ещё вопросы

Сообщество Overcoder
Наверх
Меню