Python/feedparser脚本在CGI上无法显示/字符编码问题

1 投票
2 回答
518 浏览
提问于 2025-04-16 02:14
#!/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和Python脚本时遇到了问题。在终端下运行脚本一切正常,除了出现了“IndexError: list index out of range”的错误,我对此做了处理。但是当我通过CGI运行脚本时,只能看到“WORK MAINTENANCE”这一行,以及d.entries[count].title的第一行重复了9次?这让我很困惑……

另外,我该如何在feedparser中设置对克罗地亚(巴尔干)字母的支持,比如:č、ć、š、ž、đ? # -- coding: utf-8 -- 这个设置没有效果,我是在运行Ubuntu服务器。

提前感谢你的帮助。

祝好。

2 个回答

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')
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
        ....

撰写回答