UnicodeEncodeError: кодек «ascii» не может кодировать символ «\ u2159» в позиции 32: порядковый номер не в диапазоне (128) - PullRequest
0 голосов
/ 28 июня 2019

Я использую python3 и beautifulsoup для удаления веб, но я получил эту ошибку.Я пытался исправить это, используя решения, приведенные в других ответах, но ни один не решает мою проблему.

# -*- coding: utf-8 -*-
import os
import locale
os.environ["PYTHONIOENCODING"] = "utf-8"
myLocale=locale.setlocale(category=locale.LC_ALL, locale="en_GB.UTF-8")

from urllib.request import urlopen
from bs4 import BeautifulSoup
import re
import pandas as pd


def getrank (animeurl):
    html = urlopen(animeurl)
    bslink = BeautifulSoup(html.read(), 'html.parser')

    rank = bslink.find('span', {'class' : 'numbers ranked'}).get_text().replace('Ranked #', '')



def spring19():
    html = urlopen('https://...')
    bs = BeautifulSoup(html.read(), 'html.parser')

    link = []
    for x in bs.find_all('a', {'class' : 'link-title'}):
        link.append(x.get("href"))



    ranklist = []
    for x in link:
        x.encode(encoding='UTF-8',errors='ignore')
        ranklist.append(getrank(x))

    return ranklist

spring19()


сообщение об ошибке: UnicodeEncodeError: кодек «ascii» не может кодировать символ «\ u2159» в позиции 32: порядковый номер не в диапазоне (128)

Причина, по которой эта ошибка появилась, заключается в том, что в URL-адресах, которые я удалил, есть несколько символов.Но я до сих пор не знаю, как мне это исправить.

Большое спасибо!

1 Ответ

0 голосов
/ 28 июня 2019

Решена эта проблема с помощью следующих решений: Как преобразовать строку URL-адреса в безопасные символы с помощью python?

код, модифицированный следующим образом:

    ranklist = []
    for x in link:
        x = quote(x, safe='/:?=&')
        ranklist.append(getrank(x))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...