Я не смог воспроизвести вашу проблему, в моем случае исходный код выглядел точно так же, как document.documentElement.innerHTML.Итак, я не знаю, почему в этом конкретном примере у вас есть именно эта проблема.
Хотя исходный код страницы часто может не иметь никакого отношения к innerHTML документа.
innerHTML имеет как минимум 2 неточности:
- Показывает результат выполнения JS, который может изменить DOM.
Например, здесь у вас есть исходный код примера приложения React.
<body>
<div id="app"></div>
<script src="main.js"></script>
</body>
А вот вывод, который он производит:
![React output](https://i.stack.imgur.com/EbvkW.png)
В этом случае источник полностью отличается от innerHTMLтак как мы генерируем новые вещи с помощью js.
Однако, было бы иначе, если бы мы изменили существующую разметку с помощью JS & Вероятно, это таксо страницей результатов Google.
innerHTML показывает, какой браузер проанализировал, а не содержимое, которое было отправлено с сервера.
Например, если я отправил неверный HTML-код с сервера, например:
<head>...</head>
<!DOCTYPE html>
<html lang="en">
<body>...</body>
</html>
Тогда document.documentElement.innerHTML будет приятно выводить мою плохую разметку следующим образом:
<head>...</head>
<body>...</body>
Эта, вероятно, не влияет на страницу Google, но также стоит учесть, когда вы что-то строите на основе документаinnerHTML.
Так что, если вам действительно нужен исходный код страницы, возможно, вам просто нужно извлечь его непосредственно с сервера и просто получить текст из ответа.
В JS на стороне клиента вы можете сделать это с помощью fetch API .Единственная проблема заключается в том, что вы не сможете сделать это из источника, отличного от google.com, поскольку вы можете столкнуться с проблемой политики CORS.
Со стороны сервера у вас наверняка найдется инструмент для выполненияПОЛУЧИТЬ запрос.Таким образом, вы можете использовать что-то вроде http.get в NodeJs или file_get_contents () в PHP.