We put a recipe search engine together based on spidered pages. To get the recipes we spider selected pages from large and small recipe sites.
For every recipe site we spider we create a filter list of pages to index, we store only pages containing one recipe only, no homepages, contact pages, recipe lists, forums etc.. Using this method it's easy to gather a lot of recipes as well. Uniqueness is not really an issue as we can not use the recipes directly anyway, we aim at getting our search results indexed by Google.
Regardless of your method of filling a database, perhaps basing your pages on snippets of multiple recipes may be a good approach for the unique content issue.
It may take some effort to create a list of every possible ingredient in plural/ singular and/or stemmed form, but that may be enough to be the basis of a shopping list generator. If you also categorize the ingredients (ie herb, meat, vegetable etc) you have more options for playing with the data.
On our site we use a mix of free (perl) scripts, open source code and custom code. I wouldn't mind sharing more details, but not on a public forum. Find me on MSN if you would like to know more.