因此,我在使用tld库时遇到了错误的问题,该库不知道如何处理某些代理请求url。为了解决这个问题,添加了一些例外,它可以处理特定日期的数据。
import tld
from tld import get_fld
#Custom try-except function to handle IPs and garbage http requests
def try_get_fld(x):
try:
return get_fld(x)
except tld.exceptions.TldBadUrl:
return np.nan
except tld.exceptions.TldDomainNotFound:
return np.nan
#Apply the function above to the request dataframe
request['flds'] = request['request'].apply(try_get_fld)
但是在另一天,我遇到了一个新错误:
ValueError: Invalid IPv6 URL
所以我添加了例外:
def try_get_fld(x):
try:
return get_fld(x)
except tld.exceptions.TldBadUrl:
return np.nan
except tld.exceptions.TldDomainNotFound:
return np.nan
except tld.exceptions.ValueError:
return np.nan
然后我遇到了一个属性错误:
AttributeError: 'module' object has no attribute 'ValueError'
因此我将其添加到例外中:
def try_get_fld(x):
try:
return get_fld(x)
except tld.exceptions.TldBadUrl:
return np.nan
except tld.exceptions.TldDomainNotFound:
return np.nan
except tld.exceptions.ValueError:
return np.nan
except tld.exceptions.AttributeError:
return np.nan
然后我得到AttributeError:'module'对象再次没有属性'ValueError'。
有人知道我在做什么错或如何解决我的问题吗?目的只是用NaN标记请求网址,以便我可以将该方法应用于我的数据集。
答案 0 :(得分:3)
您可以指定例外列表,使代码简洁明了。
def try_get_fld(x):
try:
return get_fld(x)
except (tld.exceptions.TldBadUrl,
tld.exceptions.TldDomainNotFound,
ValueError):
return np.nan
答案 1 :(得分:1)
这是因为ValueError
是Python内置的异常,不是tld
的成员。使用except ValueError
代替tld.exceptions.ValueError
。