Extract the title from a webpage using the python 3 standard lib
Looks pretty clean to me, good job! Here's what I recommend:


The to_ascii function is small and readable, but in my opinion the is_string and is_bytes functions are overkill:

def to_ascii(data):
    if isinstance(data, str):
        ...
    elif isinstance(data, bytes):
        ...
    else:
        ...

We can make to_ascii less complex by returning immediately:

def to_ascii(data):
    if isinstance(data, str):
        return data.encode("ascii", errors="ignore")
    elif isinstance(data, bytes):
        return data.decode("ascii", errors="ignore")


We can then leave out the else clause:

def to_ascii(data):
    if isinstance(data, str):
        return data.encode("ascii", errors="ignore")
    elif isinstance(data, bytes):
        return data.decode("ascii", errors="ignore")
    return str(data).encode("ascii", errors="ignore")

error_callback is pretty much useless. Maybe you planned on adding more functionality to the Parser class, but as is, you can just leave it out.
I don't expect a parser's constructor to automatically parse the data I pass. How about:

class Parser(HTMLParser):
    def __init__(self, data):
        self._data = data
        ...

    def parse(self):
        self._parsed = self.feed( ... )