import string import re class parser: def __init__(self, results, word): self.results = results self.word = word self.temp = [] def genericClean(self): self.results = re.sub('', '', self.results) self.results = re.sub('', '', self.results) self.results = re.sub('', '', self.results) self.results = re.sub('', '', self.results) self.results = re.sub('%2f', ' ', self.results) self.results = re.sub('%3a', ' ', self.results) self.results = re.sub('', '', self.results) self.results = re.sub('', '', self.results) self.results = re.sub('','',self.results) self.results = re.sub('','',self.results) for e in ('>', ':', '=', '<', '/', '\\', ';', '&', '%3A', '%3D', '%3C'): self.results = self.results.replace(e, ' ') def urlClean(self): self.results = re.sub('', '', self.results) self.results = re.sub('', '', self.results) self.results = re.sub('%2f', ' ', self.results) self.results = re.sub('%3a', ' ', self.results) for e in ('<', '>', ':', '=', ';', '&', '%3A', '%3D', '%3C'): self.results = self.results.replace(e, ' ') def emails(self): self.genericClean() reg_emails = re.compile( # Local part is required, charset is flexible # https://tools.ietf.org/html/rfc6531 (removed * and () as they provide FP mostly ) '[a-zA-Z0-9.\-_+#~!$&\',;=:]+' + '@' + '[a-zA-Z0-9.-]*' + self.word) self.temp = reg_emails.findall(self.results) emails = self.unique() return emails def fileurls(self, file): urls = [] reg_urls = re.compile('', '', self.results) self.results = re.sub('', '', self.results) reg_people = re.compile('>[a-zA-Z0-9._ ]* - Google\+') #reg_people = re.compile('">[a-zA-Z0-9._ -]* profiles | LinkedIn') self.temp = reg_people.findall(self.results) resul = [] for x in self.temp: y = x.replace(' | LinkedIn', '') y = y.replace(' profiles ', '') y = y.replace('LinkedIn', '') y = y.replace('"', '') y = y.replace('>', '') if y != " ": resul.append(y) return resul def people_twitter(self): reg_people = re.compile('(@[a-zA-Z0-9._ -]*)') #reg_people = re.compile('">[a-zA-Z0-9._ -]* profiles | LinkedIn') self.temp = reg_people.findall(self.results) users = self.unique() resul = [] for x in users: y = x.replace(' | LinkedIn', '') y = y.replace(' profiles ', '') y = y.replace('LinkedIn', '') y = y.replace('"', '') y = y.replace('>', '') if y != " ": resul.append(y) return resul def people_linkedin(self): reg_people = re.compile('">[a-zA-Z0-9._ -]* \| LinkedIn') #reg_people = re.compile('">[a-zA-Z0-9._ -]* profiles | LinkedIn') self.temp = reg_people.findall(self.results) resul = [] for x in self.temp: y = x.replace(' | LinkedIn', '') y = y.replace(' profiles ', '') y = y.replace('LinkedIn', '') y = y.replace('"', '') y = y.replace('>', '') if y != " ": resul.append(y) return resul def profiles(self): reg_people = re.compile('">[a-zA-Z0-9._ -]* - Google Profile') self.temp = reg_people.findall(self.results) resul = [] for x in self.temp: y = x.replace(' Google Profile', '') y = y.replace('-', '') y = y.replace('">', '') if y != " ": resul.append(y) return resul def people_jigsaw(self): res = [] #reg_people = re.compile("'tblrow' title='[a-zA-Z0-9.-]*'>") reg_people = re.compile( "href=javascript:showContact\('[0-9]*'\)>[a-zA-Z0-9., ]*") self.temp = reg_people.findall(self.results) for x in self.temp: a = x.split('>')[1].replace("[a-zA-Z0-9]*') self.temp = reg_sets.findall(self.results) sets = [] for x in self.temp: y = x.replace('>', '') y = y.replace('(.*?)') temp = reg_hosts.findall(self.results) for x in temp: if x.count(':'): res = x.split(':')[1].split('/')[2] else: res = x.split("/")[0] self.temp.append(res) hostnames = self.unique() return hostnames def unique(self): self.new = [] for x in self.temp: if x not in self.new: self.new.append(x) return self.new