У меня проблема с загрузкой веб-страниц и их обработкой. Что я хочу сделать:
- использование Mechanize для загрузки веб-страниц в переменную
- распечатать эту веб-страницу (перед записью в файл для дальнейшей обработки)
- искать заданные слова на веб-странице (это будет дальнейшее исследование) и посчитать их, сколько я нашел.
Моя проблема в кодировке символов, потому что я получаю
<title>csonthãᄅjas termãᄅsek - wikipãᄅdia</title>
вместо
<title>csonthéjas termések - wikipédia</title>
Проблема существует почти со всеми акцентированными и «странными» символами, такими как _3 _... Когда я просто записываю его в виде строки, это работает.
print 'csonthéjas termések - wikipédia'
Chardet говорит, что он имеет кодировку символов ISO-8859-2, но ничего не меняется, когда я меняю кодировку скрипта. Когда я пытаюсь кодировать или декодировать веб-страницу как любую кодировку, я получаю сообщение об ошибке («недопустимый байт продолжения» или «порядковый номер не в диапазоне (128)»
Я пробовал много кодировок, разных агентов браузера, обнаруживая кодировку с помощью chardet, а затем используя эту информацию, но ничто не решило мою проблему. Я знаю, что это простой вопрос, но я не смог найти на него правильного ответа. Я использую Windows 8.1 и Python 2.7.6
Мой код следующий (я пытался сократить его настолько просто, насколько мог):
#!/usr/bin/python
# -*- coding: ISO-8859-2 -*-
def url_get(url_input): #Get the webpage
"Get the webpage"
import mechanize
url = url_input
br = mechanize.Browser()
br.set_handle_equiv(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)
#User-agent','Mozilla/1.22 (compatible; MSIE 10.0; Windows 3.1)
br.addheaders = [('user-agent', ' Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.3) Gecko/20100423 Ubuntu/10.04 (lucid) Firefox/3.6.3'),
('accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8')]
result = br.open(url).read().lower()
print result
import chardet
rawdata = result
detection = chardet.detect(rawdata)
charenc = detection['encoding']
print charenc
return result
text = url_get('http://hu.wikipedia.org/wiki/Csonth%C3%A9jas_term%C3%A9sek')
print 'csonthéjas termések - wikipédia'