Hot tips for crawling data:
- Cache pages locally while you work on the indexing
- Nokogiri is awesome
- Don't be afraid to use regular expressions
- Initially, put data into a spreadsheet (not the db).
That way it can be checked in and diffed.
I also have a lot of subtle tricks for cleaning up messy data. For example, to see if two similar authors refer to the same person, I have a method that converts an author name to an author key. The key is just like the name, only it's been uppercased, apostrophes removed, etc. Plus weird stuff like this: # replace all vowels with the letter E
s = s.gsub(/[AEIOUY]+/, "E")
It's little things like this hack that make a big difference in data quality.(edit: formatting)