'Helper method for using in self.grep()
:param request: The HTTP request
:param response: The HTTP response
:param kb_key: Knowledge base dict key
:param domain: Target domain for get_emails filter
:return: None'

def _grep_worker(self, request, response, kb_key, domain=None):

    try:
        dp = parser_cache.dpc.get_document_parser_for(response)
    except BaseFrameworkException:
        msg = 'Failed    to    get    document    parser    for    "%s"    at    get_emails.'
        om.out.debug((msg % response.get_url()))
        return
    emails = set(dp.get_emails(domain))
    for mail_address in emails:
        if request.sent(mail_address):
            continue
        mail_address = mail_address.lower()
        url = response.get_url()
        uniq_key = (mail_address, url)
        if (uniq_key in self._already_reported):
            continue
        self._already_reported.add(uniq_key)
        desc = 'The    mail    account:    "%s"    was    found    at    "%s".'
        desc = (desc % (mail_address, url))
        i = Info('Email    address    disclosure', desc, response.id, self.get_name())
        i.add_to_highlight(mail_address)
        i.set_url(url)
        i[EmailInfoSet.ITAG] = mail_address
        i['user'] = mail_address.split('@')[0]
        self.kb_append_uniq_group('emails', kb_key, i, group_klass=EmailInfoSet)
