я думаю, что watir или селен - лучший выбор. Большинство других упомянутых библиотек на самом деле являются HTML-парсерами, и это не то, что вам нужно ... Вы отказываетесь, если владелец веб-сайта хотел, чтобы вы получили его данные, он поместил бы дамп своей базы данных или сайта на торрент и избежать всех http запросов и дорогого трафика.
По сути, вам нужно проанализировать HTML, но, что более важно, автоматизировать браузер. Это до такой степени, что можно перемещать мышь и щелкать мышью, по сути, имитируя пользователя. Вам нужно использовать программу для захвата экрана, чтобы добраться до капч и отправить их на decaptcha.com (который решает их за доли процента), чтобы обойти это. забудьте о сохранении этого файла капчи путем анализа html без его рендеринга в браузере «как это должно быть видно». Вы снимаете с экрана, а не httprequestscraping.
watir сделал для меня хитрость в сочетании с autoitx (для перемещения мыши и ввода клавиш в полях -> иногда это необходимо для набора правильных событий javascript) и простой утилитой захвата экрана для капчи. таким образом, вы будете наиболее успешны, совершенно бесполезно писать отличный html-парсер, чтобы узнать, что владелец сайта превратил часть текста в графику. (Проблематично? Нет, просто возьмите OCR-библиотеку и подайте jpeg, текст будет возвращен). Кроме того, я редко видел, чтобы они заходили так далеко, хотя на китайских сайтах много текста в графике.
Xpath все время сохранял мой день, это отличный язык, специфичный для предметной области (IMHO, я могу ошибаться), и вы можете перейти к любому тегу на странице, хотя иногда вам нужно настроить его.
Что я пропустил, так это «обратные шаблоны» (это есть в роботе селен). Это было в Perl в модуле CPAN Template :: Extract, очень удобно.
Разбор HTML или создание DOM, я бы оставил браузеру, да, это будет не так быстро, но будет работать все время.
Кроме того, библиотеки, которые претендуют на роль Useragents, бесполезны, сайты в настоящее время защищены от удаления, и рендеринг сайта на реальном экране часто необходим, чтобы выйти за рамки капчи, но также и события JavaScript, которые нужно запускать для получения информации. появляться и т.д.
Watir, если вы в Ruby, Selenium для остальных, я бы сказал. «Human Emulator» (или Web Emulator в России) действительно создан для такого рода операций, но опять же это российский продукт компании, которая не скрывает своих намерений.
Я также думаю, что в одну из этих недель Уайли выпустит новую книгу по соскобам, которая должна быть интересной. Удачи ...