Я использую гусь двигатель, чтобы извлечь текст статьи из URL, используя следующий код:Джанго - UnicodeDecodeError: странный характер «»
g = Goose()
article = g.extract(url="http://www.sportingnews.com/ncaa-football/story/2013-09-17/week-4-exit-poll-johnny-manziel-alabama-oregon-texas-mack-brown-mariota")
Он выглядит этот URL является для некоторых проблематичных, потому что я получаю следующее ошибка:
'utf8' codec can't decode byte 0xa0 in position 1: invalid start byte
The string that could not be encoded/decoded was: �
Я правильно указать UTF-8, как мой кодек в верхней части моего файла, как так:
# -*- coding: utf-8 -*-
Как я могу решить эту проблему?
EDIT: Трассировка стека:
Environment:
Request Method: GET
Request URL: http://localhost:3000/scansources/
Django Version: 1.5.1
Python Version: 2.7.2
Installed Applications:
('django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'summaries',
'sources_scan')
Installed Middleware:
('django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware')
Traceback:
File "/Library/Python/2.7/site-packages/django/core/handlers/base.py" in get_response
115. response = callback(request, *callback_args, **callback_kwargs)
File "/Users/yonatanoren/Documents/python/summarizer/sources_scan/views.py" in scan_sources
183. article = g.extract(url="http://www.sportingnews.com/ncaa-football/story/2013-09-17/week-4-exit-poll-johnny-manziel-alabama-oregon-texas-mack-brown-mariota")
File "/Library/Python/2.7/site-packages/goose_extractor-1.0.2-py2.7.egg/goose/__init__.py" in extract
53. return self.crawl(cc)
File "/Library/Python/2.7/site-packages/goose_extractor-1.0.2-py2.7.egg/goose/__init__.py" in crawl
60. article = crawler.crawl(crawl_candiate)
File "/Library/Python/2.7/site-packages/goose_extractor-1.0.2-py2.7.egg/goose/crawler.py" in crawl
90. article.top_node = extractor.calculate_best_node(article)
File "/Library/Python/2.7/site-packages/goose_extractor-1.0.2-py2.7.egg/goose/extractors.py" in calculate_best_node
248. text_node = self.parser.getText(node)
File "/Library/Python/2.7/site-packages/goose_extractor-1.0.2-py2.7.egg/goose/parsers.py" in getText
179. txts = [i for i in node.itertext()]
Exception Type: UnicodeDecodeError at /scansources/
Exception Value: 'utf8' codec can't decode byte 0xa0 in position 1: invalid start byte
Спасибо.
EDIT: Использование оболочки питона я получаю ту же ошибку с этим кодом:
>>> g = Goose()
>>> article = g.extract(url="http://www.sportingnews.com/ncaa-football/story/2013-09-17/week-4-exit-poll-johnny-manziel-alabama-oregon-texas-mack-brown-mariota")
Я также обновленное все мои файлы, чтобы использовать следующую команду и все еще получаю ошибку.
#encoding=utf-8
Я считаю, что это может быть проблемой с самой гусью. Поскольку Goose обрабатывает текст и возвращает его. Как я могу решить это в этом случае?
EDIT: следующее не делает различия ни
text = unicode(article.cleaned_text,'utf-8')
Вы уверены, что эта ошибка вызвана вызовом 'g.extract'? Или это происходит, когда вы пытаетесь преобразовать свой результат в строку позже? –
Чтобы помочь с решением, пожалуйста, опубликуйте всю ошибку трассировки стека. – danihp
Комментарий 'coding' в верхней части относится только к тому, как компилятор Python интерпретирует * исходный код *; данные, считываемые из других источников или отправленные в другом месте, кодируются и декодируются в соответствии с различными правилами в целом. –