Scrapy: кодек ascii не может кодировать символы - PullRequest
0 голосов
/ 25 апреля 2019

У меня проблема с запуском моего сканера

UnicodeEncodeError: 'ascii' codec can't encode characters in position

Я использую этот код

author = str(info.css(".author::text").extract_first())

, но все же у меня возникает эта ошибка, есть идеи, как ее решить?Спасибо!

Вот ошибка

Traceback (most recent call last):
 File "/usr/local/lib/python2.7/site-packages/scrapy/utils/defer.py", line 
 102, in iter_errback
yield next(it)
  File "/usr/local/lib/python2.7/site-packages/sh_scrapy/middlewares.py", line 30, in process_spider_output
for x in result:
 File "/usr/local/lib/python2.7/site-packages/scrapy/spidermiddlewares/offsite.py", line 29, in process_spider_output
for x in result:
 File "/usr/local/lib/python2.7/site-packages/scrapy/spidermiddlewares/referer.py", line 339, in <genexpr>
return (_set_referer(r) for r in result or ())
 File "/usr/local/lib/python2.7/site-packages/scrapy/spidermiddlewares/urllength.py", line 37, in <genexpr>
return (r for r in result or () if _filter(r))
 File "/usr/local/lib/python2.7/site-packages/scrapy/spidermiddlewares/depth.py", line 58, in <genexpr>
  return (r for r in result or () if _filter(r))
 File "/app/__main__.egg/teslamotorsclub_spider/spiders/teslamotorsclub.py", line 40, in parse
author = str(info.css(".author::text").extract_first())
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

1 Ответ

1 голос
/ 25 апреля 2019

Попробуйте:

author = info.css(".author::text").extract_first().decode('utf-8')

Причина этого в том, что extract_first возвращает необработанный объект байтов. Чтобы преобразовать это в строку, python не догадывается о том, как он закодирован, поэтому вам нужно сделать это явным. Utf-8 справится практически со всем, что вы в него бросите.

...