У нас в одном проекте есть самописная библиотека для работы с бд. В ней функции типа findOne никогда не возвращают null. Если запись не найдена, они тоже возвращают экземпляр entity. При этом у него есть метод exists, который вернет false, если запись не была найдена. Пример:
$entity = $repository->findOne(123);
if ($entity->exists()) {
//нашли
} else {
//не нашли
}
Поместите весь контент html-страницы в строковую переменную, сконвертируйте в нужную кодировку (UTF-8) и только потом уже скармливайте ее в simple html dom parser. Я именно так всегда и делал и никогда не испытывал никаких проблем.
Все серьезные отличия между 2 и 3 питоном по пальцам можно перечислить. Пусть это вас не пугает.
Если будете изучать питон по книжке Лутца "Изучаем питон" последних изданий, то там все эти отличия указываются и подробно рабираются. Ничего страшного там нет.