Можно использовать Scrapy. Вам тогда не придется думать о параллельных процессах, блокировках и IO в целом. Вы просто пишете логику разбора страницы. Сам проект на Twisted.
Одно хочу сказать про lxml - не используейт его parse с передачей URL в качетве источника. Лучше скачать страницу тем же request и загнать ее в lxml через document_fromstring - много себе нервных клеток сэкономите.
Радовался как ребенок, когда узнал про xpath. Раньше парсил через cssselect. Радость ушла после часа мозгоклюйства и кучи не найденных элементов. Такая удобная вещь, а так криво работает. Наверное, мы просто не умеем ее готовить. :)