2010-08-03 24 views
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 

J'ai un problème avec le script CGI et paython. Sous le script terminal s'exécute bien, sauf "IndexError: index de liste hors de portée", et je mets pass pour cela. Mais quand je lance un script via CGI, je n'ai que la ligne Work Maintenance et la première ligne de d.entries [count] .title répété 9 fois? Donc déroutant ...Le script Python/feedparser ne s'affiche pas sur le codage CGI/caractères

Aussi comment puis-je installer le support dans feedparser pour les lettres de Croation (balkan); č, ć, š, ž, đ? # - - codage: utf-8 - - ne fonctionne pas et j'utilise le serveur Ubuntu.

Merci d'avance pour votre aide.

Cordialement.

Répondre

0
for opis in d: 
    try: 
      print """<B>Place/Time:</B> %s<br>""" % d.entries[count].title 

Vous n'utilisez pas 'opis' dans votre sortie.

Essayez quelque chose comme ceci:

for entry in d.entries: 
    try: 
     print """<B>Place/Time:</B> %s<br>""" % entry.title 
     .... 
+0

J'ai mis comme vous triste, mais ça ne marche toujours pas, le script fonctionne bien seul (sans erreurs avec votre modification :)) mais lorsqu'il est utilisé par CGI, il affiche seulement la première ligne? Une suggestion? – user409239

+0

Oke Je pense que j'ai trouvé le problème, CGI ne peut pas imprimer mes lettres croates, č, š, ž, and, et c'est la raison pour laquelle le script se brise. Comment configurer le support de ces lettres dans python/ubuntu? – user409239

+0

Je pense que le problème est: '# - * - codage: utf-8 - * -' vous permet seulement d'utiliser UTF-8 dans le code source de votre programme: http://evanjones.ca/python-utf8.html Si vous voulez à _output_ UTF-8 aussi, vous devez indiquer au navigateur web d'attendre UTF-8, en utilisant peut-être un 'tag. (_Maybe_ vous pouvez simplement ajouter l'en-tête Charset: UTF-8 à côté de votre en-tête 'Content-Type: text/html' existant, je ne suis pas sûr.) – sarnold

0

Oke avait un autre problème, le texte que je manualy entré montrerait le CGI, mais les pages Web RSS wouldnt. Donc, vous devez encoder avant d'écrire:

# -*- 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')