Python ValueError:未知的url类型:space(?)

时间:2017-02-17 19:12:56

标签: python urllib2 downloading

我在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%的时候,脚本会失败,并发出以下错误:

enter image description here

我认为它是一个不间断的空间(在代码中用\ xa0表示),但它仍然失败。有什么想法吗?

1 个答案:

答案 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