通过url直接使用python从imgur下载文件
有时,指向imgur的链接不带文件扩展名。例如:通过url直接使用python从imgur下载文件,python,bash,imgur,Python,Bash,Imgur,有时,指向imgur的链接不带文件扩展名。例如:http://imgur.com/rqCqA。我想下载这个文件并给它一个已知的名称,或者在一个更大的代码中得到它的名称。问题是我不知道文件类型,所以我不知道应该给它什么扩展名 如何在python或bash中实现这一点?您可以使用BeautifulSoup或类似工具解析页面的源代码,并在src中查找带有照片哈希的img标记。以你的例子来说,图片是 <img alt="" src="http://i.imgur.com/rqCqA.jpg" or
http://imgur.com/rqCqA
。我想下载这个文件并给它一个已知的名称,或者在一个更大的代码中得到它的名称。问题是我不知道文件类型,所以我不知道应该给它什么扩展名
如何在python或bash中实现这一点?您可以使用BeautifulSoup或类似工具解析页面的源代码,并在src中查找带有照片哈希的img标记。以你的例子来说,图片是
<img alt="" src="http://i.imgur.com/rqCqA.jpg" original-title="">
我刚刚尝试转到以下URL:
我以前用它下载了大量xkcd网络漫画,它似乎也适用于
希望这有帮助难道mimetype不是text/html,因为链接是页面,而不是图像吗?我认为这行不通。它实际上是
(无,无)
它实际上只存储JPEG,并且依赖浏览器(正确地)忽略文件扩展名并使用mime类型。你应该使用i.imgur.com而不是imgur.com来制作图像-虽然它可以工作,但不能保证继续工作,因为它们从不提供这些链接。使用wb
而不是w
会有什么不同吗?虽然输出结果是一样的。我没有用wb
尝试过,但我无法想象它会损害进程使用r.json
而不是json.loads(r.content.decode('utf-8'))
。另外posixpath.basename(urlparse.urlspit(img\u url.path)
你说得对;我只是复制粘贴了一些用于旧版本请求的代码。谢谢你的urlspit
提示。@Schnouki我收到这个错误:{“数据”:{“错误”:“你正在使用的Imgur API版本不再可用”},“成功”:false,“状态”:410}
import posixpath
import urllib.parse
import requests
url = "http://api.imgur.com/2/image/rqCqA.json"
r = requests.get(url)
img_url = r.json["image"]["links"]["original"]
fn = posixpath.basename(urllib.parse.urlsplit(img_url).path)
r = requests.get(img_url)
with open(fn, "wb") as f:
f.write(r.content)
def saveImage(url, fpath):
contents = urllib2.urlopen(url)
f = open(fpath, 'w')
f.write(contents.read())
f.close()