当前位置:  开发笔记 > 编程语言 > 正文

python检查网址类型

如何解决《python检查网址类型》经验,为你挑选了1个好方法。

我在python中编写了一个爬虫,获取的url有不同的类型:它可以是带有html和url的url,带有图像或大档案或其他文件.所以我需要快速确定这种情况,以防止读取大档案等大文件并继续抓取.如何在页面加载开始时确定URL类型的最佳方法?我明白我可以用url名称做什么(结尾是.rar .jpg等),但我认为这不是完整的解决方案.我需要检查标题或类似的东西吗?我也需要一些页面大小预测来防止大量下载.换句话说,设置下载页面大小的限制,以防止快速记忆进食.



1> Ivo van der ..:

如果在资源上使用HTTP HEAD请求,则将在没有资源数据本身的情况下获取资源上的相关元数据.具体而言,内容长度和内容类型标题将是有意义的.

例如

HEAD /stackoverflow/img/favicon.ico HTTP/1.1
host: sstatic.net

HTTP/1.1 200 OK
Cache-Control: max-age=604800
Content-Length: 1150
Content-Type: image/x-icon
Last-Modified: Mon, 02 Aug 2010 06:04:04 GMT
Accept-Ranges: bytes
ETag: "2187d82832cb1:0"
X-Powered-By: ASP.NET
Date: Sun, 12 Sep 2010 13:38:36 GMT

您可以使用httplib在python中执行此操作:

>>> import httplib
>>> conn = httplib.HTTPConnection("sstatic.net")
>>> conn.request("HEAD", "/stackoverflow/img/favicon.ico")
>>> res = conn.getresponse()
>>> print res.getheaders()
[('content-length', '1150'), ('x-powered-by', 'ASP.NET'), ('accept-ranges', 'bytes'), ('last-modified', 'Mon, 02 Aug 2010 06:04:04 GMT'), ('etag', '"2187d82832cb1:0"'), ('cache-control', 'max-age=604800'), ('date', 'Sun, 12 Sep 2010 13:39:26 GMT'), ('content-type', 'image/x-icon')]

这告诉你它是1150字节的图像(图像/*mime类型).有足够的信息供您决定是否要获取完整资源.

此外,此标头告诉您服务器接受HTTP部分内容请求(接受范围标头),该请求允许您批量检索数据.

如果直接执行GET,您将获得相同的标头信息,但这也将开始在响应正文中发送资源数据,这是您要避免的.

如果您想了解有关HTTP标头及其含义的更多信息,可以使用在线工具,例如"Fetch"

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有