我正在使用Python 3.7.0从数千个URL中检索并保存favicon.ico文件,其中一些是错误的。为了提高效率,我尝试使用以下代码在尝试检索图像之前测试每个URL:
url_parts = urlparse(url)
status_code = urllib.request.urlopen(url_parts.scheme + "://" + url_parts.netloc).getcode()
如果返回的status_code
为2xx,则我致电:
urllib.request.urlretrieve(url_parts.scheme + "://" + url_parts.netloc + "/favicon.ico", local_path)
local_path
是先前为网站图标分配的唯一路径\名称(此位置并不总是存在于网站上,但是在这种情况下,代码可以正常恢复)。奇怪的是,urlretrieve
总是在站点存在时起作用,但是urlopen
经常(但不总是)为同一站点抛出异常。
有人知道为什么urlopen
有时会失败,或者如何创建有效的测试吗?