Самое простое универсальное решение проблемы: не стесняйтесь указывать display:none
в вашем CSS, однако вы можете изменить его на block
(или что-то еще) с помощью JavaScript, а затем вам также придется добавить класс для вашего элемента, который действительно делает переход с помощью setTimeout () . Вот и все.
I.e.:
<style>
#el {
display: none;
opacity: 0;
}
#el.auto-fade-in {
opacity: 1;
transition: all 1s ease-out; /* future, future, please come sooner! */
-webkit-transition: all 1s ease-out;
-moz-transition: all 1s ease-out;
-o-transition: all 1s ease-out;
}
</style>
<div id=el>Well, well, well</div>
<script>
var el = document.getElementById('el');
el.style.display = 'block';
setTimeout(function () { el.className = 'auto-fade-in' }, 0);
</script>
Проверено в последних разумных браузерах. Очевидно, что он не должен работать в IE9 или ранее.
Многие веб-страницы закодированы неправильно. Для синтаксического анализа HTML try BeautifulSoup , поскольку он может обрабатывать многие типы неправильных HTML, которые находятся в дикой природе.
Beautiful Soup - это парсер Python HTML / XML, предназначенный для быстрого оборотные проекты, такие как скрипинг экрана. Три функции делают его мощным:
blockquote>
- Красивый суп не задушит, если вы дадите ему плохую разметку. Он дает дерево синтаксического анализа, которое делает примерно такой же смысл, как и исходный документ. Это обычно достаточно хорошо, чтобы собрать нужные данные и убежать.
- Beautiful Soup предоставляет несколько простых методов и идиомы Pythonic для навигации, поиска и изменения дерева синтаксического анализа: инструментарий для анализа документа и извлекая то, что вам нужно. Вам не нужно создавать собственный парсер для каждого приложения.
- Beautiful Soup автоматически преобразует входящие документы в Unicode и исходящие документы в UTF-8. Вам не нужно думать о кодировках, если в документе не указывается кодировка, а Beautiful Soup не может автоопределить ее. Затем вам нужно указать исходную кодировку.
Акцент мой.
Сайт «http://www.homestead.com» не претендует на отправку вам utf-8, на самом деле ответ считается iso-8859-1:
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
Вы должны использовать правильную кодировку для страницы, которую вы действительно получили, а не просто гадать случайным образом.
Байт в 15344 равен 0x96. Предположительно, в позиции 15343 имеется либо однобайтная кодировка символа, либо последний байт многобайтовой кодировки, что делает 15344 началом символа. 0x96 находится в двоичном коде 10010110, и любой байт, соответствующий шаблону 10XXXXXX (от 0x80 до 0xBF), может быть только вторым или последующим байтом в кодировке UTF-8.
Следовательно, поток является либо не UTF-8, либо else поврежден.
Изучая URI, на который вы ссылаетесь, мы находим заголовок:
Content-Type: text/html
Поскольку не указано кодирование, мы должны использовать значение по умолчанию для HTTP, которое ISO-8859-1 (также известный как «Latin 1»).
Изучая контент, мы находим строку:
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
. Это механизм возврата для людей, по какой-то причине не удалось правильно настроить заголовки HTTP. На этот раз нам явно сказано, что кодировка символов - это ISO-8859-1.
Как таковая, нет никаких оснований ожидать, что ее читают как UTF-8.
Для дополнительного удовольствия хотя, если учесть, что в ISO-8859-1 0x96 кодируется U + 0096, который является управляющим символом «НАЧАЛО ОХРАНЯЕМЫХ РАЙОНОВ», мы обнаруживаем, что ISO-8859-1 не является правильным. Кажется, что люди, создавшие страницу, сделали для вас аналогичную ошибку.
Из контекста, казалось бы, они фактически использовали Windows-1252, так как в этой кодировке 0x96 кодирует U + 2013 (EN-DASH, выглядит например –
).
Итак, чтобы проанализировать эту конкретную страницу, которую вы хотите декодировать в Windows-1252.
В более общем плане вы хотите изучить заголовки при выборе кодировок символов и хотя в этом случае это может быть неверно (или, может быть, не более, чем несколько «кодеков ISO-8859-1» на самом деле являются Windows-1252), вы будете исправлять чаще. Вам все равно нужно что-то уловить, как это, читая резервную копию. Метод decode
принимает второй параметр под названием errors
. По умолчанию это 'strict'
, но вы также можете иметь 'ignore'
, 'replace'
, 'xmlcharrefreplace'
(не подходит), 'backslashreplace'
(не подходит), и вы можете зарегистрировать свой собственный обработчик возврата с помощью codecs.register_error()
.