2010-08-03 4 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 

CGI 및 paython 스크립트에 문제가 있습니다. 터미널 스크립트에서 "IndexError : list index of range"를 제외하고는 정상적으로 실행됩니다. 그러나 CGI를 통해 스크립트를 실행하면 d.entries [count] .title에서 9 회 반복되는 WORK MAINTENANCE 행과 첫 번째 행만 표시됩니까? 그래서 혼란 스럽네요 ...CGI/문자 코드에 Python/feedparser 스크립트가 표시되지 않습니다.

또한 어떻게 크로아티아 (발칸 반도) 문자에 대한 피드 파서를 지원할 수 있습니까? č, ć, š, ¼, đ? # - - 코딩 : utf-8 - - 작동하지 않으며 우분투 서버를 실행 중입니다.

도움을 위해 미리 감사드립니다.

감사합니다.

답변

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를 통해 사용될 때 첫 줄만? 제안 사항이 있으십니까? – user409239

+0

오케 나는이 문제를 발견했다고 생각합니다. CGI는 크로 타안 글자,, č, š, ž, đ를 인쇄 할 수 없으며 이것이 스크립트가 손상되는 이유입니다. 어떻게 파이썬/우분투에서 해당 문자에 대한 지원을 설정할 수 있습니까? – user409239

+0

나는 문제가 있다고 생각한다 :'# - * - coding : utf-8 - * -'는 프로그램 소스 코드 내에서만 UTF-8을 사용할 수있게한다 : http://evanjones.ca/python-utf8.html 원한다면 _output_ UTF-8로 웹 브라우저가 UTF-8을 기대할 필요가 있습니다. 아마도 '태그. (_Maybe_ 기존의'Content-Type : text/html' 헤더와 함께'Charset : UTF-8' 헤더를 추가 할 수 있습니다. 잘 모르겠습니다.) – sarnold

0

해두 내가 CGI하지만 RSS 웹 페이지 wouldnt가에 표시 할 입력 수동으로 실시 또 다른 문제, 텍스트를했다. 그럼 당신은 쓰기 전에 인코딩해야합니다 :

# -*- 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') 
관련 문제