import os,sys,re,urllib titleReg = re.compile(r'(.*)<.*?') directorsReg = re.compile(r'.*?Directed by.*') writersReg = re.compile(r'.*?Writing credits.*') genresReg = re.compile(r'.*?Genre:.*') yearReg = re.compile(r'<a href="/Sections/Years/.*">(.*?)</a>') taglineReg = re.compile(r'.*?Tagline:</b>(.*?)<a href.*') plotReg = re.compile(r'.*?Plot Outline:</b>(.*?)<a href.*') ratingReg = re.compile(r'<b>(.*?/.*?)</b>(.*)') runtimeReg = re.compile(r'(.*? min).*') castReg = re.compile(r'.*?Cast overview.*?(<tr>.*)') countryReg = re.compile(r'.*?Country:.*') languageReg = re.compile(r'.*?Language:.*') details = re.compile(r'<p class="plotpar">(.*?)</p>') class IMDb: def __init__(self,url): self.title = None self.directors = None self.writers = None self.genres = None self.details = None self.year = None self.tagline = None self.plot = None self.rating = None self.runtime = None self.cast = None self.country = None self.language = None sock = open(url) #sock = urllib.urlopen(url) page = sock.readlines() sock.close() i = 0 while i < len(page): if titleReg.match(page[i]): self.title = titleReg.search(page[i]).group(1).strip() if directorsReg.match(page[i]): in_directors = re.compile(r'.*?">(.*?)</.*?') i += 1 self.directors = in_directors.findall(page[i]) if writersReg.match(page[i]): in_writers = re.compile(r'<a href="/name/.*?>(.*?)<') i += 3 if in_writers.search(page[i]) != None: self.writers = in_writers.findall(page[i]) if genresReg.match(page[i]): in_genres = re.compile(r'<a href="/Sections/Genres/.*?>(.*?)<') i += 1 self.genres = in_genres.findall(page[i]) if yearReg.match(page[i]): self.year = yearReg.search(page[i]).group(1).strip() if taglineReg.match(page[i]): self.tagline = taglineReg.search(page[i]).group(1).strip() if plotReg.match(page[i]): self.plot = plotReg.search(page[i]).group(1).strip() if ratingReg.match(page[i]): self.rating = ratingReg.search(page[i]).group(1).strip() if runtimeReg.match(page[i]): self.runtime = runtimeReg.search(page[i]).group(1).strip() if castReg.match(page[i]): in_cast = re.compile(r'.*?<a href="/name.*?>(.*?)<.*?top">(.*?)</td>') self.cast = {} l = castReg.search(page[i]).group(1).split('</tr><tr>') for j in l: r = in_cast.search(j) if r != None: self.cast[r.group(1).strip()] = r.group(2).strip() if countryReg.match(page[i]): in_country = re.compile(r'<a href=.*?>(.*?)</a>') i += 1 self.country = in_country.findall(page[i]) if languageReg.match(page[i]): in_language = re.compile(r'<a href=.*?>(.*?)</a>') i += 1 self.language = in_language.findall(page[i]) i+=1 #sock = urllib.urlopen(url+'plotsummary') sock = open('C:\\Documents and Settings\\No1\\Desktop\\plotsummary.htm') page = sock.readlines() sock.close() for i in page: match = details.search(i) if match != None: self.details = match.group(1).strip() break flick = IMDb("C:\\Documents and Settings\\No1\\Desktop\\TheRoyalTenenbaums.htm") #flick = IMDb("http://www.imdb.com/title/tt0265666/") print flick.title print flick.directors print flick.writers print flick.genres print flick.details print flick.year print flick.tagline print flick.plot print flick.rating print flick.runtime print flick.cast print flick.country print flick.language