#!/usr/bin/env python # simple WikiPedia client # usage: pedia.py word import sys import httplib import HTMLParser import getopt class WikiPediaParser(HTMLParser.HTMLParser): def __init__(self): self.is_continue = True self.is_content = False HTMLParser.HTMLParser.__init__(self) def feed(self, data): HTMLParser.HTMLParser.feed(self, data) return self.is_continue def handle_data(self, data): if not self.is_content: return print data.strip().replace('\n', ' '), def handle_comment(self, data): if data.strip() == 'start content': self.is_content = True if data.strip() == 'end content': self.is_content = False def handle_endtag(self, tag): if not self.is_content: return if tag == 'p': self.is_continue = False print print def main(): verbose = False try: opts, args = getopt.getopt(sys.argv[1:], "v", ["verbose"]) except getopt.GetoptError: usage() if len(args) < 1: usage() for o, a in opts: if o in ("-v", "--verbose"): verbose = True query = 'http://en.wikipedia.org/wiki/' + args[0] conn = httplib.HTTPConnection("en.wikipedia.org") conn.request("GET", query, '', {'User-Agent' : 'pedia.py'}) response = conn.getresponse() parser = WikiPediaParser() if verbose: parser.feed(response.read()) else: while True: buffer = response.read(512) if buffer: if not parser.feed(buffer): break else: break def usage(): print "usage: pedia.py [-v] word" sys.exit(2) main()