我在Python 2.7中使用urllib2模块,使用Spyder 3.0通过读取包含它们列表的文本文件批量下载文本文件:
reload(sys)
sys.setdefaultencoding('utf-8')
with open('ocean_not_templated_url.txt', 'r') as text:
lines = text.readlines()
for line in lines:
url = urllib2.urlopen(line.strip('ï \xa0\t\n\r\v'))
with open(line.strip('\n\r\t ').replace('/', '!').replace(':', '~'), 'wb') as out:
for d in url:
out.write(d)
我已经在网址中发现了一堆奇怪的字符,但是,当我们删除了近90%的时候,脚本会失败,并发出以下错误:
我认为它是一个不间断的空间(在代码中用\ xa0表示),但它仍然失败。有什么想法吗?
答案 0 :(得分:1)
这是一个奇怪的网址!
通过网络指定通信协议。尝试使用http://
为URL添加前缀,如果WWW上存在该文件,请尝试使用域名。
文件始终位于某个服务器的某个目录中,或位于系统本地。因此必须有这样的文件的网络路径,例如:
http://127.0.0.1/folder1/samuel/file1.txt
相同示例, localhost 是 127.0.0.1 的别名(通常)
http://localhost/folder1/samuel/file1.txt
这可能会解决问题。只要想想你的文件存在的位置以及如何解决它......
<强>更新强>
我对此进行了相当多的实验。我想我知道为什么会出现这个错误! :d
我推测存储网址的文件实际上在结尾附近有一个偷偷摸摸的 空行。我可以说它接近结尾,因为你说它执行了大约90%然后失败了。因此,python urllib2函数get_type无法处理该空URL并抛出
unknown url type:
我认为这就是问题所在!删除文件ocean_not_templated_url.txt
中的空行并试一试!
请检查并告诉我们! :P