Beautifulsoup link(url) 有一个特殊字符

Beautifulsoup link(url) has a special character

我有一个 link,它有一个特殊字符 ®,例如下面的 link。 https://www.google.com/something®某事

我收到一条错误消息,指出 UnicodeEncodeError: 'ascii' codec can't encode character '\xae' in position 68: ordinal not in range(128)。 我查找了其他海报,但它只解释了如何忽略特殊字符或处理 HTML 正文中的特殊字符。我无法删除特殊字符,因为我需要确切的 URL 来提取数据。如何以正确的方式打开 URL 以提取数据?

尝试用 %C2%AE 替换 ® 字符,应该可以。

如果您有多个链接涉及同一问题,可能是这样的?

import urllib.parse

for link in new_links:
    url = link
    url = urllib.parse.urlsplit(url)
    url = list(url)
    '''
    url now looks like this:
    [
    'https', 
    'www.accessdata.fda.gov', 
    '/scripts/drugshortages/dsp_ActiveIngredientDetails.cfm',
    'AI=AVYCAZ®%20(ceftazidime%20and%20avibactam)%....', 
    ''
    ]
    '''
    url[3] = urllib.parse.quote(url[3]) 
    url = urllib.parse.urlunsplit(url)

    html = urlopen(url)

关键是 quote 函数,它将字符串中的特殊字符替换为其“%xx”代码。您可能需要根据您的链接调整 url[3] = ... 行。

参考: