httplib和urllib2常用方法

  这些是几年前用过的一些方法,以前都是用过就丢掉了,现在翻出来记录一下。

import httplib
import urllib2
import socket

##--------------------------------------------------------用httplib进行GET请求
conn=httplib.HTTPConnection(‘172.22.31.40‘,8080)##如果要走代理,那这里自然要改为代理服务器的地址
conn.request("GET","/cloud/index.php")
result=conn.getresponse()
print result.read()
resultStatus=result.status
print resultStatus
conn.close()

conn=httplib.HTTPConnection(‘www.cnblogs.com‘,80)
conn.request("GET","/idbeta/default.html")
result=conn.getresponse()
print result.read()
resultStatus=result.status
print resultStatus
conn.close()

##--------------------------------------------------------用httplib进行POST请求
conn=httplib.HTTPConnection(‘172.22.131.40‘,80)
##一般重点关注真实包的"Content-type",例如"application/x-www-form-urlencoded"等;而data则根据真实抓包情况来模拟,需要url编码的用urllib.urlencode
header1 = {"Content-type": "application/x-www-form-urlencoded", "User-Agent" : "test"}
data1 = ‘‘‘{
   "audit_control_list" : [],
   "ws" : [
      "base_setting",
   ],
   "xp_fix" : []
} ‘‘‘
url1=‘/api/getconf.json?mid=ebcd32d5f68e404db1ccc8ff2dacb360&ver=1.0‘
conn.request(‘POST‘,url1,body=data1,headers=header1)
result=conn.getresponse()
content=result.read()
print content
conn.close()

##发送multipart/form-data请求的例子
conn=httplib.HTTPConnection(‘172.22.131.40‘,80)
header2={"Content-Type":"multipart/form-data; boundary=----------------------------2bb6caed7d98"}
data2 = ‘‘‘------------------------------2bb6caed7d98
Content-Disposition: form-data; name="em"
md5s=92f44e405db16ac55d97e3bfe3b132fa+04c5d2b4da9a0f3fa8a45702d4256cee42d8c48d	452608	\WINDOWS\syswow64\windowspowershell\v1.0\powershell.exe	1
dcca4b04af87e52ef9eaa2190e06cbac+12a602b86fc394b1c88348fb099685eabb876495	1174016	\PROGRAM FILES\windows sidebar\sidebar.exe	1
------------------------------2bb6caed7d98--
‘‘‘
url2=‘/cloudquery.php‘
conn.request("POST",url2,body=data2,headers=header2)
result=conn.getresponse()
resultStatus=result.status
##获取请求的页面内容
content=result.read()
print content
print result.status,result.reason
##关闭连接
conn.close()

##--------------------------------------------------------用urllib2进行GET请求
##直接open就是GET
url="http://www.cnblogs.com/idbeta/default.html"
response =urllib2.urlopen(url)
print response.read()
##--------------------------------------------------------用urllib2进行POST请求
url="http://172.22.131.40/api/getconf.json?mid=ebcd32d5f68e404db1ccc8ff2dacb360&ver=1.0"
header1 = {"Content-type": "application/x-www-form-urlencoded", "User-Agent" : "test"}
data1 = ‘‘‘{
   "audit_control_list" : [],
   "base_config" : [],
   "data_linkage" : [],
   "md" : [],
   "nac_linkage" : [],
   "neteye" : [],
   "p2p_setting" : [],
   "safe_control_list" : [],
   "sd" : [ "sd_settings", "rp_settings" ],
   "ui" : [],
   "ws" : [
      "base_setting",
      "popwnd_setting",
      "startup_assistant",
      "safe_protect",
      "leak_repair"
   ],
   "xp_fix" : []
} ‘‘‘
req = urllib2.Request(url, data1, header1)  # 发送请求同时传data表单,这个是字典方式
response = urllib2.urlopen(req)  #接受反馈的信息
the_page = response.read()  #读取反馈的内容
print the_page

##--------------------------------------------------------urllib2设置超时时间
##方法一  全局设置
socket.setdefaulttimeout(1);秒
##或
urllib2.socket.setdefaulttimeout(1)
##方法二  urllib2.urlopen加入timeout参数
urllib2.urlopen(url,timeout=1)
##--------------------------------------------------------urllib2设置代理
proxy = urllib2.ProxyHandler({"http" : ‘http://172.22.31.85:808‘})
urllib2.install_opener(urllib2.build_opener(proxy))
url="http://www.cnblogs.com/idbeta/default.html"
response =urllib2.urlopen(url)
print response.read()

  除了上面所说的,还有httplib2、pycurl、requests等等都是和http相关的,用法大同小异,大家去各自官网看介绍就可以了,可见python的第三方库实在有点太多了啊。

时间: 2024-08-25 01:26:16

httplib和urllib2常用方法的相关文章

httplib urllib urllib2 pycurl 比较

最近网上面试看到了有关这方面的问题,由于近两个月这些库或多或少都用过,现在根据自己的经验和网上介绍来总结一下. httplib 实现了HTTP和HTTPS的客户端协议,一般不直接使用,在python更高层的封装模块中(urllib,urllib2)使用了它的http实现.所以效率要比这两个库高一点.http://www.cnblogs.com/beiyeren/p/4046139.html #-*- coding:utf-8 –*- from urlparse import urlparse i

python之web模块学习-- urllib2

下面继续学习python的web模块 ---  urllib2,一个源于urllib又高于urllib的模块. 1  urllib2 简介 urllib2是python自带的一个访问网页及本地文件的库. 与urllib相比,显著区别之处在于: 1) urllib2可以接受一个Request类的实例来设置URL请求的headers,urllib仅可以接受URL.这意味着,用urllib时不可以伪装User Agent字符串等. 2) urllib提供urlencode方法用来encode发送的da

py2exe error: "ImportError: No module named httplib"

写了一个python程序(python2.7),用py2exe打包成一个native exe,结果老是报错 Traceback (most recent call last): File "p4_ticket_auth_jenkins.py", line 7, in <module> File "zipextimporter.pyc", line 82, in load_module File "jenkins\__init__.pyc&quo

Linux内核补丁批量自动下载工具

Linux kernel官网cgit工具不支持按变更代码进行补丁搜索,想到个办法就是把补丁都抓下来,这样可以在本地搜索.花了2个小时写了个小工具,话不多说,直接看效果: E:\docs\TOOLS\python\patch_spider>python patch_spider.py linux-3.10.y fs/ubifs 2013-08-15:get patches info...2016-08-27 eed1a4028c96cabb79747ee01e17b1057b01027c UBIF

用 python 实现一个多线程网页下载器

今天上来分享一下昨天实现的一个多线程网页下载器. 这是一个有着真实需求的实现,我的用途是拿它来通过 HTTP 方式向服务器提交游戏数据.把它放上来也是想大家帮忙挑刺,找找 bug,让它工作得更好. keywords:python,http,multi-threads,thread,threading,httplib,urllib,urllib2,Queue,http pool,httppool 废话少说,上源码: 1 # -*- coding:utf-8 -*- 2 import urllib,

第一个Python程序——博客自动访问脚本

动机 今天有朋友写信说他认为自己的wordpress博客内显示的访问统计信息不正常,希望我能为他制造一些访问信息,供他对比.朋友提出的请求是在短时间内快速打开100个不同的博客页面,以便他从产生的访问量变化中理解博客访问数据. 本人作为一个搞计算机的人,有把任何重复性劳动自动化的冲动,所以虽然点开100个网页的任务手工做并不复杂,但还是从一开始就彻底否定了.刚好想学Python很久了,于是就拿这次的小机会来学习一把,顺便记录下第一次的Python学习成果. 本文使用Python 2.7.3实现了

[转载]python 爬虫总结

1.基本抓取网页 get方法 import urllib2 url = "http://www.baidu.com" response = urllib2.urlopen(url) print response.read() post方法 import urllib import urllib2 url = "http://abcde.com" form = {'name':'abc','password':'1234'} form_data = urllib.ur

Python爬虫:一些常用的爬虫技巧总结

爬虫在开发过程中也有很多复用的过程,这里总结一下,以后也能省些事情. 1.基本抓取网页 get方法 import urllib2 url = "http://www.baidu.com" response = urllib2.urlopen(url) print response.read() post方法 import urllib import urllib2 url = "http://abcde.com" form = {'name':'abc','pass

python 爬虫总结【转】

1.基本抓取网页 get方法 import urllib2 url = "http://www.baidu.com" response = urllib2.urlopen(url) print response.read() post方法 import urllib import urllib2 url = "http://abcde.com" form = {'name':'abc','password':'1234'} form_data = urllib.ur