Clean up repeated file.writes, if/elses when adding keys to a dict
You can make the HTML a multi-line string with formatting templates (see this SO question for discussion on indentation, I've kept it simple):

def print_html(car, html_file):
    html = '''&lt;h3&gt;{0[price]}&lt;/h3&gt;
&lt;img src="{0[image]}"&gt;
&lt;ul&gt;
     &lt;li&gt;{0[year]} {0[trim]}&lt;/li&gt;
     ...
&lt;/ul&gt;'''


Then your writing becomes a single line:

    html_file.write(html.format(car))


Note that this doesn't strip; you should do that when the data go into the dictionary. 



There is a lot of duplication in get_car. Also, you do the find twice, which will slow you down. Try something like:

def get_car(listing):
   car = dict()
   data = {'year': ('span', 'atcui-truncate ymm'),
           ...}

   for key in data:
       element, class_ = data[key]
       result = listing.find(element, class_=class_)
       car[key] = '' if result is None else result.get_text().strip()

   return car 




Finally, you aren't always following the style guide, e.g. lining up operators:

### Declarations

home = os.environ['HOME']
filename = home + '/results.html'
results_file = open(filename, 'w')