Ответ 1
После выполненных операций вы увидите:
>>> req.headers['content-type']
'text/html; charset=windows-1251'
и так:
>>> encoding=req.headers['content-type'].split('charset=')[-1]
>>> ucontent = unicode(content, encoding)
ucontent
теперь является строкой Unicode (из 140655 символов) - так, например, чтобы отобразить ее часть, если ваш терминал UTF-8:
>>> print ucontent[76:110].encode('utf-8')
<title>Lenta.ru: Главное: </title>
и вы можете искать и т.д. и т.д.
Edit: Unicode I/O обычно сложнее (возможно, это то, что поднимает первоначальный вопрос), но я собираюсь обойти сложную проблему ввода строк Unicode в интерактивный интерпретатор Python (полностью не связанный с исходным вопросом) чтобы показать, как, как только строка Юникода правильно введена (я делаю это по кодовым точкам - тупой, но не сложный;-), поиск абсолютно без проблем (и, следовательно, мы надеемся, что исходный вопрос был тщательно отреагирован). Опять же, предполагая терминал UTF-8:
>>> x=u'\u0413\u043b\u0430\u0432\u043d\u043e\u0435'
>>> print x.encode('utf-8')
Главное
>>> x in ucontent
True
>>> ucontent.find(x)
93
Примечание. Имейте в виду, что этот метод может не работать для всех сайтов, так как некоторые сайты указывают только кодировку символов внутри обслуживаемых документов (например, с помощью мета-тегов http-equiv).