加载中...
  1. About.com
  2. Computing & Technology
  3. Python

Discuss in our forum

RSSReader.py

Python for an RSS Reader

From , former About.com Guide

See More About:


#!/usr/bin/python

import re
import string
import sys
import httplib
import urllib2
from xml.dom import minidom

## CGI Version
#import cgi
#import cgitb; cgitb.enable()
#form = cgi.FieldStorage() # holds data from form
#feedname = form["selection"].value

## PHP Version
feedname = sys.argv[1]

# feedname = "Spiegel"
# feedname = "GuardianWorld"

def listinfo(type):
    infofile = "feedlist." + type
    datafile = open(infofile, "r")
    line = datafile.readline()

    record = {}

    while line:
        data = string.split(line, ';')
        feedname = data[0]
        address = data[1]
        record[feedname] = address
        line = datafile.readline()

    return record

feedinfo = listinfo("dat")

class ModelFeed:

    def __init__(self):
        self.data = []

    def feeddata (self, feedname):
        feedaddress = feedinfo[feedname]
        return feedaddress

    def links (self, address):
        file_request = urllib2.Request(address)
        file_opener = urllib2.build_opener()
        file_feed = file_opener.open(file_request).read()
        file_xml = minidom.parseString(file_feed)

        item_node = file_xml.getElementsByTagName("item")

        linkdata = ""

        for item in item_node:
            title = item.childNodes[1]
            link = item.childNodes[3]

            ftitle = title.firstChild.data
            flink = link.firstChild.data

            linkdata = linkdata + "<a href=\"" + flink + "\" target=\"target\">" + ftitle + "</a><br>\n"

        return linkdata

    def image (self, feedname):
        image_address = imginfo[feedname]
        return image_address


def inodeValue(doc, nodename):
    dom = minidom.parseString(doc)
    node = dom.getElementsByTagName(nodename)
    norm = node[0].toxml()
    node_no_xml = re.sub('(<title>)|(<\/title>)|(<link>)|(<\/link>)|(<url>)|(</url>)', '', norm)
    value = str(node_no_xml)
    print value
    return value


def dnodeValue(doc, nodename):
    dom = minidom.parseString(doc)
    node = dom.getElementsByTagName(nodename)
    norm = node[0].toxml()
    node_no_xml = re.sub('(<title>)|(<\/title>)|(<link>)|(<\/link>)|(<description>)|(<\/description>)', '', norm)
    value = str(node_no_xml)
    print value
    return value

def bodyfn(feedname):
    feed = ModelFeed()
    feedurl = feed.feeddata(feedname)
    body = feed.links(feedurl)
    return body

    

def main():
    i = 0
    body = bodyfn(feedname)
    output = body
    print output


if __name__ == "__main__":
    main()
Related Searches file xml self address form selection file request xml dom request address
  1. About.com
  2. Computing & Technology
  3. Python
  4. Web Development
  5. RSSReader.py - Python Code for an RSS Reader

©2011 About.com. All rights reserved. 

A part of The New York Times Company.