HTML5 allows people to tag their elements like
but how do search engines do it with older websites?
First and foremost, product search engines encourage contributors to utilize feeds which encode this type of metadata such that the product search engine does not have to scan raw HTML.
Failing that, a relatively advanced product search engine might apply a product search heuristic to raw HTML which it scans. With sufficient input from its developers, such a heuristic might "learn" to associate the table cell following a table cell containing the string "Manufacturer" with the name of the manufacturer - for example:
... could be parsed to associate the "Manufacturer" key with the value "BMW" - the specifics of the HTML composition could vary, however, so long as the site's HTML followed the same pattern for each product it would be trivial to map all of the products' data (and, given a sophisticated search engine, existing verified data could be used to help identify the patterns in which different sites expressed their data).
As a further example, if you were a product search programmer analyzing raw HTML and you knew that BMW manufactured a specific make in a specific year, you could skip product:manufacturer associations and simply search for a value beginning with a currency symbol when you encountered a page with both "BMW" and the name of the car's make (and no other manufacturers or makes).
Google uses microdata for it's rich snippets. This in fact is additional markup predating HTML5. This gives exact information for search engines about products, recepies, businesses, events, and other things when crawling over the sites. Google mainly uses microdata based on schema.org's markup, but there are other markups as well.
This way webmasters can control information without relying on "guess work".
You might want to check the following links for further information on the subject.