假设我有如下链接:
http://example.com/index.html
http://example.com/stack.zip
http://example.com/setup.exe
http://example.com/news/
在上面的链接中,第一和第四个链接是网页链接,第二个和第三个是文件链接。
这些只是文件链接的一些例子,即.zip和.exe,但可能还有很多其他文件。
是否有任何标准方法可以区分文件网址或网页链接? 提前谢谢。
答案 0 :(得分:4)
import urllib
import mimetypes
def guess_type_of(link, strict=True):
link_type, _ = mimetypes.guess_type(link)
if link_type is None and strict:
u = urllib.urlopen(link)
link_type = u.headers.gettype() # or using: u.info().gettype()
return link_type
演示:
links = ['http://stackoverflow.com/q/21515098/538284', # It's a html page
'http://upload.wikimedia.org/wikipedia/meta/6/6d/Wikipedia_wordmark_1x.png', # It's a png file
'http://commons.wikimedia.org/wiki/File:Typing_example.ogv', # It's a html page
'http://upload.wikimedia.org/wikipedia/commons/e/e6/Typing_example.ogv' # It's an ogv file
]
for link in links:
print(guess_type_of(link))
输出:
text/html
image/x-png
text/html
application/ogg
答案 1 :(得分:1)
import urllib
mytest = urllib.urlopen('http://www.sec.gov')
mytest.headers.items()
('content-length', '20833'), ('expires', 'Sun, 02 Feb 2014 19:36:12 GMT'), ('server', 'SEC'), ('connection', 'close'), ('cache-control', 'max-age=0'), ('date', 'Sun, 02 Feb 2014 19:36:12 GMT'), ('content-type', 'text/html')]
mytest.headers.items()是一个元组列表,你可以在我的例子中看到列表中的最后一项描述了内容
我不确定长度是否有所不同,所以你可以通过迭代来找到它的长度 'content-type'在其中。