我在这里尝试做的是获取给定URL的标题,以便我可以确定MIME类型.我希望能够看到是否http://somedomain/foo/会返回HTML文档或JPEG图像.因此,我需要弄清楚如何发送HEAD请求,以便我可以读取MIME类型而无需下载内容.有谁知道这样做的简单方法?
好的,我需要使用Python下载一些网页,并快速调查我的选项.
包含在Python中:
urllib - 在我看来,我应该使用urllib2代替.urllib没有cookie支持,只有HTTP/FTP /本地文件(没有SSL)
urllib2 - 完整的HTTP/FTP客户端,支持最需要的东西,如cookie,不支持所有HTTP动词(只有GET和POST,没有TRACE等)
功能齐全:
机械化 - 可以使用/保存Firefox/IE cookie,采取跟随第二个链接的行动,积极维护(2011年3月发布0.2.5)
PycURL - 支持curl所做的一切(FTP,FTPS,HTTP,HTTPS,GOPHER,TELNET,DICT,FILE和LDAP),坏消息:自2008年9月9日起未更新(7.19.0)
新的可能性:
urllib3 - 支持连接重用/池和文件发布
不推荐使用(也就是使用urllib/urllib2):
httplib - 仅限HTTP/HTTPS(无FTP)
httplib2 - 仅限HTTP/HTTPS(无FTP)
让我印象深刻的第一件事是urllib/urllib2/PycURL/mechanize都是非常成熟的解决方案,效果很好.机械化和PycURL附带了许多Linux发行版(例如Fedora 13)和BSD,所以安装通常不是问题(所以这很好).
urllib2看起来不错,但我想知道为什么PycURL和机械化看起来都非常受欢迎,是否有一些我缺少的东西(即如果我使用urllib2,我会在某个角落将自己画到一个角落?).我真的很喜欢这些事情的优点/缺点的反馈,所以我可以为自己做出最好的选择.
编辑:在urllib2中添加了关于动词支持的注释
我想检查某个网站是否存在,这就是我正在做的事情:
user_agent = 'Mozilla/20.0.1 (compatible; MSIE 5.5; Windows NT)'
headers = { 'User-Agent':user_agent }
link = "http://www.abc.com"
req = urllib2.Request(link, headers = headers)
page = urllib2.urlopen(req).read() - ERROR 402 generated here!
Run Code Online (Sandbox Code Playgroud)
如果页面不存在(错误402,或其他任何错误),我该怎么做page = ...才能确保我正在阅读的页面退出?
什么是验证文档是否遵循某些HTML版本(最好是我可以指定)的最佳方法?我希望能够知道故障发生的位置,就像在基于Web的验证器中一样,除了在本机Python应用程序中.
我需要在没有实际下载内容的情况下检查页面是否被重定向.我只需要最终的URL.这样做的最好方法是Python?谢谢!
我正在使用urllib(注意不是urllib2)并从用户提供的URL获取页面标题.不幸的是,有时url不是HTML,而是远程站点上的一些大文件或一些非常长的运行进程.
我已经检查了python文档,但是urllib是有限的,看看源代码,我似乎可以改变它,但我不能在服务器上这样做.提到了info()但没有关于如何实现它的例子.
我正在使用FancyURLopener,我猜在urllib2中不可用,我不知道urllib2是否可以解决问题
我仍然通过urllib源和检查urllib2,但我不是这些工具的专家.
python ×6
content-type ×2
html ×2
http ×2
http-headers ×2
limits ×1
mechanize ×1
pycurl ×1
python-2.7 ×1
urllib ×1
urllib2 ×1
urlopen ×1
validation ×1
xhtml ×1