Beautifulsoup链接(URL)具有特殊字符

问题描述 投票:0回答:2

我有一个带有特殊字符®的链接,如下面的链接。https://www.google.com/something®something

我收到一条错误消息,即UnicodeEncodeError:'ascii'编解码器无法在位置68处编码字符'\ xae':序数不在range(128)中。我查找其他海报,但仅说明如何忽略特殊字符或如何处理HTML正文中的一个。我无法删除特殊字符,因为我需要该确切的URL来提取数据。如何以正确的方式打开该URL以提取数据?

python python-3.x beautifulsoup special-characters
2个回答
0
投票

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


0
投票

如果您有多个链接存在相同问题,也许是这样?

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] = ...行。

参考:https://stackoverflow.com/a/18269491/6601244

© www.soinside.com 2019 - 2024. All rights reserved.