Мне нужно сделать снимок веб-сайта, и я ищу для этого подходящую библиотеку или программу. Веб-сайт использует Java Script и отправляет обновления на страницу, и мне нужно фиксировать их, а также саму страницу. Я использую curl для захвата самой страницы, но я не знаю, как фиксировать обновления. Если бы у меня был выбор, я бы использовал C++.
С Уважением



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Взгляните на ПаукОбезьяна.
На самом деле я не использовал его в гневе, поэтому не уверен, что он сделает то, что вы хотите. Я столкнулся с тем, что он использовался опционально с фреймворком Scrapy для веб-сканирования и очистки экрана, написанным на Python.
В качестве альтернативы, можете ли вы перепроектировать, как выполняются push-обновления JavaScript, и получить к ним прямой доступ. Похоже, вам нужно сохранить эти обновления и / или применить их к базовой HTML-странице.
Проблема в том, что ваши веб-страницы обновляются, потому что на странице выполняется код сценария. Использование curl не поможет вам в этом ..
Не уверен в ваших точных потребностях ... но вы могли бы написать букмарклет javascript-инжектора, который добавляет кнопку на любую веб-страницу и позволяет вам вручную захватывать DOM или body html в любое время ... Вот сколько приложений для маркировки клипов работает .
Если вам нужно что-то, что автоматически фиксирует обновления по мере их появления - например, фильм ... тогда вам понадобится что-то более сложное ...
Если вы все еще хотите использовать C++ и curl, попробуйте выяснить, что делает javascript на странице - я предполагаю, что он просто использует таймер для отправки запроса AJAX и обновления страницы (хотя это может быть сложнее). Используйте такой инструмент, как firefox с firebug (вам нужен «сетевой» шпион), чтобы узнать, что это за запрос - вы получите:
Если повезет, у вас будет достаточно, чтобы имитировать поведение в C++ с помощью curl. Если вы не можете ничего сделать из собранных данных, вам придется просмотреть javascript и попытаться выяснить, что он делает (но в большинстве случаев обновления страниц действительно просты).
Самый простой способ сделать это - сделать это в браузере, например. в качестве плагина firefox (написанного на javascript) - если это необходимо для чего-либо, кроме домашнего проекта, это может быть немного «неэлегантно», но это должно быть действительно легко:
Установите Firefox и Грязная обезьяна. Попросите сценарий GM добавить события DOM, где это необходимо, для отслеживания изменений. Затем вы можете использовать XMLHttpRequest для отправки информации на сервер или записать их в локальные файлы с помощью XPCOM файл IO операции.
Благодаря этому вы можете делать то, что хотите, в десятке строк и практически без обратного проектирования, тогда как то, что другие посоветовали (очистка экрана), потребует тысячи строк кода для сайта IMO с тяжелым JavaScript.
Дополнение: это / не / работа для C++. И если вы все равно сделаете это на C++, вам придется реконструировать JS, так что вы можете просто выучить достаточно JS для использования GreaseMonkey в первую очередь.
Если вы ищете парсинг статической веб-страницы, BeautifulSoup (Python) - один из лучших и самых простых.
Если вы хотите очистить некоторые отрисованные javascript тикеры или что-то в этом роде, это невозможно сделать, пока страница не будет отрисована, следовательно, это невозможно с одним BeautifulSoup. вам придется использовать безголовый браузер, такой как Лом - Similie (использует XULRunner), который отображает содержимое javascript в безголовом браузере, и вывод этого визуализированного содержимого можно использовать в качестве входных данных для парсера BeautifulSoup.