На стороне клиента <iframe>
- единственный практический вариант. Его можно прокрутить, но в долгосрочной перспективе он может не сработать, поскольку он технически близок к атаке с помощью клик-джеккинга.
Существует также межсайтовый XHR, но требуется согласие с конечного сайта, и сегодня он работает только в нескольких последних браузерах.
Получить HTML на стороне сервера легко (каждая приличная веб-платформа имеет возможность загружать страницы и анализировать HTML, и вы можете использовать XPath / XSLT или DOM для извлечения нужного вам бита).
Однако получить стили будет непросто - правила CSS могут не работать с фрагментом HTML, вырванным из контекста. Вам придется анализировать CSS, извлекать и преобразовывать правила или использовать браузер и читать currentStyle
каждого узла.
Очевидно, что вы должны тщательно фильтровать HTML, который извлекаете, чтобы избежать XSS. Это сложнее, чем кажется.
Если вам не нужно автоматизировать это, хороший редактор HTML + CSS WYSIWYG мог бы извлечь фрагмент содержимого со стилями.