Я использую самоцвет механизации (http://mechanize.rubyforge.org/mechanize/) с хорошими результатами. Производительность всегда является проблемой, потому что время отклика HTTP может варьироваться, но в механизации нет ничего медленного.
Я искалполучить оптимальную производительность, добавив параллелизм, где порядок поиска не был важен. Чтобы изолировать приемные буферы, может потребоваться некоторое время, чтобы буфер одного из них не был поврежден ответом другого потока.
Удачи с этим.