免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 18498 | 回复: 9
打印 上一主题 下一主题

python提取http头信息 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-03-24 19:37 |只看该作者 |倒序浏览
想用python提取http头中比如Etag,Content-Length这两个头的值,有没有特定的库可以实现啊?!
不想用urllib2实现,太慢了,有C扩展的么?

[ 本帖最后由 mageguoshi 于 2008-3-24 19:38 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-03-24 19:57 |只看该作者
pycurl又简单又强大又快速。
pycurl.Curl()有getinfo方法。

论坛徽章:
0
3 [报告]
发表于 2008-03-24 23:16 |只看该作者
恩,我看了pycurl库,网络上也有些资料,不过详细的都还是E文的,
下面是一段例子代码
import pycurl
c = pycurl.Curl()
c.setopt(pycurl.URL, "http://www.baidu.com/")
c.setopt(pycurl.HTTPHEADER, ["Accept:"])
import StringIO
b = StringIO.StringIO()
c.setopt(pycurl.WRITEFUNCTION, b.write)
c.setopt(pycurl.FOLLOWLOCATION, 1)
c.setopt(pycurl.MAXREDIRS, 5)
c.perform()
c.getinfo(pycurl.CONTENT_LENGTH_DOWNLOAD)



CONTENT_LENGTH_DOWNLOAD就是可以得到Content-Length的头信息,可是getinfo()没有Etag的变量啊!如何获得
还有c.setopt(pycurl.HTTPHEADER, ["Accept:"]) 这段什么意思,文档上是这么解释的,不过不大理解:
CURLOPT_HEADER

A non-zero parameter tells the library to include the header in the body output. This is only relevant for protocols that actually have headers preceding the data (like HTTP).

论坛徽章:
0
4 [报告]
发表于 2008-03-25 14:27 |只看该作者
pycurl能不能象urllib2一样以字典的方式返回所有http头信息啊!?

论坛徽章:
0
5 [报告]
发表于 2008-03-25 16:42 |只看该作者
import httplib

conn=httplib.HTTPConnection("www.sina.com")
conn.request("GET", "/")
r=conn.getresponse()
r.getheaders() #获取所有的http头
r.getheader("content-length") #获取特定的头


>>> conn=httplib.HTTPConnection("www.sina.com.cn")
>>> conn.request("GET", "/")
>>> r=conn.getresponse()
>>> r.getheaders()
[('x-cache', 'HIT from sh-9.sina.com.cn'), ('x-powered-by', 'mod_xlayout_jh/0.0.
1vhs.markII.remix'), ('accept-ranges', 'bytes'), ('expires', 'Tue, 25 Mar 2008 0
8:43:33 GMT'), ('vary', 'Accept-Encoding'), ('server', 'Apache/2.0.54 (Unix)'),
('last-modified', 'Tue, 25 Mar 2008 08:32:57 GMT'), ('connection', 'close'), ('e
tag', '"b177fb-48d9a-cca4e040"'), ('cache-control', 'max-age=60'), ('date', 'Tue
, 25 Mar 2008 08:42:33 GMT'), ('content-type', 'text/html'), ('age', '54')]
>>> r.getheader("content-length")
>>>

[ 本帖最后由 gucuiwen 于 2008-3-25 16:45 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2008-03-25 17:02 |只看该作者
谢谢楼上的,不过我的意思是想用pycurl库来实现上面的功能,pycurl性能和速度要比httplib快啊!

论坛徽章:
0
7 [报告]
发表于 2008-03-26 16:55 |只看该作者
python版人气很低啊!!!

论坛徽章:
7
IT运维版块每日发帖之星
日期:2016-05-27 06:20:00IT运维版块每日发帖之星
日期:2016-06-09 06:20:00操作系统版块每日发帖之星
日期:2016-06-12 06:20:00程序设计版块每日发帖之星
日期:2016-06-12 06:20:00操作系统版块每日发帖之星
日期:2016-06-13 06:20:00IT运维版块每日发帖之星
日期:2016-06-17 06:20:002015-2016NBA季后赛纪念章
日期:2016-06-28 17:42:27
8 [报告]
发表于 2014-09-20 12:21 |只看该作者
人气低没关系,我们顶上去

论坛徽章:
0
9 [报告]
发表于 2014-09-22 18:34 |只看该作者
用requests,简单.

论坛徽章:
2
数据库技术版块每日发帖之星
日期:2015-08-02 06:20:00数据库技术版块每日发帖之星
日期:2016-04-21 06:20:00
10 [报告]
发表于 2014-09-22 22:31 |只看该作者
我是python 新手  帮你顶一下。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP