Задать вопрос
@Evgeny_A

Как в selenium записать HTML в файл, а потом его прочесть?

Здравствуйте.

Пытаюсь тут сохранить HTML полученный с помощью selenium в html файл.

Записываю HTML в файл так:

f = open(file, 'w')
f.writelines(html) 
f.close()


Читаю из файла так:

html_file = "file://" + path_to_file
browser.get(html_file)


Это не работает так, как я ожидаю.

Если скачать созданный html файл и открыть его в браузере на своем компьютере, то все ок.
Если открыть этот же файл через browser.get(), то вернется только это (именно в одну строку):

<html><head></head><body></body></html></li>

Если в файле заменить весь HTML на это:

<!DOCTYPE html>
<html>
<head>
	<title>Hello!</title>
</head>
<body>
	Text Message!
</body>
</html>


То отрыв файл с помощью browser.get(), содержимое будет совпадать с тем, что я туда записал.

Если стереть HTML в файле, то browser.get() вернет это (видимо сам сгенерил):

<html><head></head><body></body></html></li>

Если попытаться открывать HTML файл не как локальный файл (file://), а как будто ресурс на внешнем сервере (https://), то контент загрузится корректно (что как-бы подтверждает, что HTML валидный).

Вопрос: Как корректно записать и прочитать HTML в файл?

Либо записывается не валидный HTML (но почему тогда файл открывается на локальном компьютере?), либо я не умею читать его с помощью browser.get() (но почему файл открывается корректно через http протокол?).

Подскажите, пожалуйста, пример!
  • Вопрос задан
  • 803 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
@Evgeny_A Автор вопроса
Проблема была в кодировке. Решение в том, чтобы записать файл в явной кодировке.

html = html.encode('UTF-8')
print(type(str(html)))
f.writelines(str(html)) 
f.close()
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы