我知道如何从urrlib2.urlopen下载简单文件
但我的结束网址不简单,它有特殊字符:
“ www.math.ualberta.ca/mss/misc/A Mathematician's Apology.pdf ”
特殊字符数学家的 '就在这条路上
我知道的一些
http://www.math.ualberta.ca/mss/misc/A%20Mathematician%27s%20Apology.pdf
是我必须用来下载文件的网址 但如果我每次都没有这种结束URL
请给我解决方案,以便我可以下载具有特殊URL的文件
我有基本的方法可以使用,但我不知道如何使用这个
请通过示例帮助我使用此方法
谢谢
答案 0 :(得分:0)
为什么不使用这样的东西?
filename = url.split('/')[-1]
cleanurl = urllib.quote(url)
urllib.urlretrieve(cleanurl, filename)
答案 1 :(得分:0)
您只想引用网址的路径组件,而不是整个引用。
最简洁的方法是将其拆分为urlparse
,引用路径组件,然后重新加入整个事件。
但事实证明,urlparse
无论如何都会自动引用路径。这并没有真正记录下来,但到目前为止,每个版本都是如此,所以如果你愿意依赖它,它就像这样简单:
>>> url = "www.math.ualberta.ca/mss/misc/A Mathematician's Apology.pdf"
>>> url = urlparse.urlparse(url).geturl()
>>> url
'http://www.math.ualberta.ca/mss/misc/A%20Mathematician%27s%20Apology.pdf'
如果您实际上只有主机和路径,实际上您可以使用urllib.quote
。使用完整的URL,将引用方案和主机之间的:
字符,但如果您没有方案,如在您的示例中,那不是问题。 (当然它也会引用你的例子中的迷路空间......但是无论你做什么 ,这些都会成为一个问题,所以你的第一步就是删除它们。)
>>> url = " www.math.ualberta.ca/mss/misc/A Mathematician's Apology.pdf "
>>> url = urllib.quote(url.strip())
>>> url
'www.math.ualberta.ca/mss/misc/A%20Mathematician%27s%20Apology.pdf'
当然,在实际使用之前,你还需要添加一个方案。