Очистка французского сайта и получение UnicodeEncodeError - PullRequest
0 голосов
/ 23 февраля 2019

Я очищаю сайт и получаю информацию по ссылкам на этом сайте, однако многие ссылки содержат акценты / французские символы.Я не могу получить ссылки на эти страницы, поэтому не могу их очистить.

Это часть кода, которая получает URL-адреса со стартовых страниц

def parse(self, response):

		subURLs = []
		
		partialURLs = response.css('.directory_name::attr(href)').extract()
		

		for i in partialURLs:

			yield response.follow('https://wheelsonline.ca/' + str(i), self.parse_dealers)

И это ошибка, которую я получаю в журнале

yield response.follow('https://wheelsonline.ca/' + str(i), self.parse_dealers)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 58: ordinal not in range(128)

Любая помощь приветствуется!Спасибо!

1 Ответ

0 голосов
/ 23 февраля 2019

Не используйте str() для преобразования этого значения.Подробнее об этом читайте здесь: UnicodeEncodeError: кодек 'ascii' не может кодировать символ u '\ xa0' в позиции 20: порядковый номер не находится в диапазоне (128)

Однако существуетлучший способ создания таких URL-адресов с помощью встроенного в Scrapy urljoin:

yield response.follow(response.urljoin(i), self.parse_dealers)

Это автоматически создаст полный URL-адрес на основе текущего URL-адреса и относительного пути.

...