Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1057790
  • 博文数量: 321
  • 博客积分: 7872
  • 博客等级: 少将
  • 技术积分: 2120
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-16 09:06
文章分类

全部博文(321)

文章存档

2017年(1)

2016年(1)

2015年(12)

2014年(17)

2013年(78)

2012年(15)

2011年(17)

2010年(67)

2009年(102)

2008年(11)

分类: LINUX

2013-06-28 15:14:18

在使用urllib的时候经常会死掉,以前debug过,是没有设置 timing out 所以超时后就会死掉。
PycURL是curl的python库,虽然有些curl的功能没有实现,但是还是很强劲的。 

curl是非常强劲的一个工具,
google内部用它来 debug GDATA API. Using cURL to interact with Google data services 

可以去 http://pycurl.sourceforge.net/ 下载最新的PycURL

简单的PycURL例子

import pycurl import StringIO  
url = "" crl = pycurl.Curl() crl.setopt(pycurl.VERBOSE,1) crl.setopt(pycurl.FOLLOWLOCATION, 1) crl.setopt(pycurl.MAXREDIRS, 5) crl.fp = StringIO.StringIO() crl.setopt(pycurl.URL, url) crl.setopt(crl.WRITEFUNCTION, crl.fp.write) crl.perform() print crl.fp.getvalue()

PycURL 自动处理cookie

import pycurl import StringIO  
url = "" crl = pycurl.Curl() crl.setopt(pycurl.VERBOSE,1) crl.setopt(pycurl.FOLLOWLOCATION, 1) crl.setopt(pycurl.MAXREDIRS, 5) crl.fp = StringIO.StringIO() crl.setopt(pycurl.URL, url) crl.setopt(crl.WRITEFUNCTION, crl.fp.write)   # Option -b/--cookie  Cookie string or file to read cookies from # Note: must be a string, not a file object. crl.setopt(pycurl.COOKIEFILE, "cookie_file_name")   # Option -c/--cookie-jar  Write cookies to this file after operation # Note: must be a string, not a file object. crl.setopt(pycurl.COOKIEJAR, "cookie_file_name")  
crl.perform() print crl.fp.getvalue()

PycURL 实现POST方法

import pycurl import StringIO import urllib  
url = "" post_data_dic = {"name":"value"} crl = pycurl.Curl() crl.setopt(pycurl.VERBOSE,1) crl.setopt(pycurl.FOLLOWLOCATION, 1) crl.setopt(pycurl.MAXREDIRS, 5) #crl.setopt(pycurl.AUTOREFERER,1)  
crl.setopt(pycurl.CONNECTTIMEOUT, 60) crl.setopt(pycurl.TIMEOUT, 300) #crl.setopt(pycurl.PROXY,proxy) crl.setopt(pycurl.HTTPPROXYTUNNEL,1) #crl.setopt(pycurl.NOSIGNAL, 1) crl.fp = StringIO.StringIO() crl.setopt(pycurl.USERAGENT, "dhgu hoho")   # Option -d/--data    HTTP POST data crl.setopt(crl.POSTFIELDS, urllib.urlencode(post_data_dic))  
crl.setopt(pycurl.URL, url) crl.setopt(crl.WRITEFUNCTION, crl.fp.write) crl.perform()   print crl.fp.getvalue()

urllib 超时设置

import socket socket.setdefaulttimeout(5.0)
转自:http://www.pythonclub.org/python-network-application/pycurl
阅读(741) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~