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\+') 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 hostnames_all(self): reg_hosts = re.compile('(.*?)') 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 people_jigsaw(self): res = [] 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._ -]* \| 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._ -]*)') 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 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 set(self): reg_sets = re.compile('>[a-zA-Z0-9]*') self.temp = reg_sets.findall(self.results) sets = [] for x in self.temp: y = x.replace('>', '') y = y.replace('