python tldextract.extract给出BadStatusLine:'';

python tldextract.extract给出BadStatusLine:'';,python,tld,Python,Tld,使用tldextract.extract(url)时,我收到了BadStatusLine:''错误: 子域,域,tld=tldextract.extract(url) 文件“/usr/local/venv/local/lib/python2.7/site packages/tldextract/tldextract.py”,第194行,摘录 返回TLD_提取器(url) 文件“/usr/local/venv/local/lib/python2.7/site packages/tldextract

使用
tldextract.extract(url)
时,我收到了
BadStatusLine:''
错误:

子域,域,tld=tldextract.extract(url) 文件“/usr/local/venv/local/lib/python2.7/site packages/tldextract/tldextract.py”,第194行,摘录 返回TLD_提取器(url) 文件“/usr/local/venv/local/lib/python2.7/site packages/tldextract/tldextract.py”,第128行,在调用中__ 返回自我提取(netloc) 文件“/usr/local/venv/local/lib/python2.7/site packages/tldextract/tldextract.py”,第132行,摘自 已注册的\u域,tld=self.\u获取\u tld\u提取器().extract(netloc) 文件“/usr/local/venv/local/lib/python2.7/site packages/tldextract/tldextract.py”,第165行,在“获取”tld_提取器中 tlds=frozenset(tld\u source()中tld\u源中tld\u源的tld) 文件“/usr/local/venv/local/lib/python2.7/site packages/tldextract/tldextract.py”,第165行,在 tlds=frozenset(tld\u source()中tld\u源中tld\u源的tld) 文件“/usr/local/venv/local/lib/python2.7/site packages/tldextract/tldextract.py”,第204行,在PublicSuffixListSource中 页面=\u获取\u页面('http://mxr.mozilla.org/mozilla-central/source/netwerk/dns/effective_tld_names.dat?raw=1') 文件“/usr/local/venv/local/lib/python2.7/site packages/tldextract/tldextract.py”,第198行,在第页 返回unicode(urllib2.urlopen(url.read(),'utf-8') 文件“/usr/lib/python2.7/urllib2.py”,第126行,在urlopen中 return\u opener.open(url、数据、超时) 文件“/usr/lib/python2.7/urllib2.py”,第400行,打开 响应=自身打开(请求,数据) 文件“/usr/lib/python2.7/urllib2.py”,第418行,打开 "开放", 文件“/usr/lib/python2.7/urllib2.py”,第378行,在调用链中 结果=func(*args) 文件“/usr/lib/python2.7/urllib2.py”,第1207行,在http\u open中 返回self.do_open(httplib.HTTPConnection,req) 文件“/usr/lib/python2.7/urllib2.py”,第1180行,打开 r=h.getresponse(缓冲=True) getresponse中的文件“/usr/lib/python2.7/httplib.py”,第1030行 response.begin() 文件“/usr/lib/python2.7/httplib.py”,第407行,在begin中 版本、状态、原因=self.\u读取\u状态() 文件“/usr/lib/python2.7/httplib.py”,第371行,处于读取状态 升起状态行(行) 错误状态行:“” 这是因为没有提供服务

如果您想继续使用tldextract来获取子域、域、tld,一个临时解决方案是使用缓存,例如在
project/tldextractor/\uuuu init\uuuuuuuuuy.py

import os 
import tldextract
TLD_CACHE_PATH = os.path.join(
    os.path.abspath(os.path.dirname(__file__)), 'tldextract_cache')
tldextractor = tldextract.TLDExtract(cache_file=TLD_CACHE_PATH, fetch=False)
项目/tldextractor/tldextract\u缓存中

然后:

这是由于没有得到服务

如果您想继续使用tldextract来获取子域、域、tld,一个临时解决方案是使用缓存,例如在
project/tldextractor/\uuuu init\uuuuuuuuuy.py

import os 
import tldextract
TLD_CACHE_PATH = os.path.join(
    os.path.abspath(os.path.dirname(__file__)), 'tldextract_cache')
tldextractor = tldextract.TLDExtract(cache_file=TLD_CACHE_PATH, fetch=False)
项目/tldextractor/tldextract\u缓存中

然后:


程序包正在尝试从当前不起作用的URL下载公共后缀列表:

http://mxr.mozilla.org/mozilla-central/source/netwerk/dns/effective_tld_names.dat?raw=1
这是由于,Mozilla暂时阻止了URL

这有一个缺点,尽管后者仅在您已经拥有公共后缀列表的缓存副本时才起作用

同时,请改用;它将数据捆绑在包本身中,不需要URL请求


更新:Mozilla现在将文件托管在MXR源存储库中,如果没有MXR.Mozilla.org Referer标头,则访问MXR源存储库会将您重定向到该新位置。

该软件包正在尝试从当前不起作用的URL下载公共后缀列表:

http://mxr.mozilla.org/mozilla-central/source/netwerk/dns/effective_tld_names.dat?raw=1
这是由于,Mozilla暂时阻止了URL

这有一个缺点,尽管后者仅在您已经拥有公共后缀列表的缓存副本时才起作用

同时,请改用;它将数据捆绑在包本身中,不需要URL请求


更新:Mozilla现在将文件托管在MXR源存储库中,任何对MXR源存储库的访问都不会使用MXR.Mozilla.org Referer头将您重定向到该新位置。

这是因为stacktrace()中的Mozilla.org URL不可用,并且
tldextract
在首次安装时尝试从该URL更新。可以禁用此实时更新(见下文),但未捕获的异常是
tldextract
bug。它应该只记录异常,并无缝地回退到包的捆绑PSL

这在刚刚发布到的tldextract 1.2.1中已修复。它会切换到新的模式。因此,升级应该绕过未捕获的异常

另一个版本很快将避免将来在GitHub PSL镜像不可用时出现未捕获的异常

关闭默认提取 在以前的版本中,可以通过关闭默认的首次安装获取来避免此问题。构造您自己的
TLDExtract
可调用
fetch=False
。发件人:


这是因为stacktrace()中的mozilla.org URL不可用,并且
tldextract
尝试在第一次安装时从该URL进行更新。可以禁用此实时更新(见下文),但未捕获的异常是
tldextract
bug。它应该只记录异常,并无缝地回退到包的捆绑PSL

这在刚刚发布到的tldextract 1.2.1中已修复。它会切换到新的模式。因此,升级应该绕过未捕获的异常

另一个版本很快将避免将来在GitHub PSL镜像不可用时出现未捕获的异常

关闭默认提取 在以前的版本中,可以通过关闭默认的首次安装获取来避免此问题。构造您自己的
TLDExtract
可调用
fetch=False
。发件人:


谢谢@Martijn Pieters。看起来publicsuffix不会返回tld、域和子域,对吗?@AJP:的确如此
publicsuffix
仅拆分tld。所有这些
t
import tldextract
no_fetch_extract = tldextract.TLDExtract(fetch=False)
no_fetch_extract('http://www.google.com')