1、使用requests执行
requests在Python2和Python3用法基本相同,有小的区别:python3中response.text是str数据类型,而response.content是bytes类型,python2中response.text是unicode数据类型,而response.content是字符串类型。
相关文档:https://2.python-requests.org//zh_CN/latest/user/quickstart.html
import requestsurl = 'https://...'payload = {'key1': 'value1', 'key2': 'value2'}# GETr = requests.get(url)# GET with params in URLr = requests.get(url, params=payload)# POST with form-encoded datar = requests.post(url, data=payload)# POST with JSON import jsonr = requests.post(url, data=json.dumps(payload))# Response, status etcr.textr.status_code
2、使用urllib2执行
urllib2模块在Python 3中名为分成urllib.request
和 urllib.error
。在将源代码转换为Python 3时,2to3工具将自动适应导入。
相关文档:https://docs.python.org/2/library/urllib2.html
def URLRequest(url, params, method="GET"): if method == "POST": return urllib2.Request(url, data=urllib.urlencode(params)) else: return urllib2.Request(url + "?" + urllib.urlencode(params))
3、使用httplib2执行
相关文档:
https://github.com/jcgregorio/httplib2
https://github.com/httplib2/httplib2/wiki/Examples
https://github.com/httplib2/httplib2/wiki/Examples-Python3
1) Python2中执行
#!/usr/bin/env pythonimport urllibimport httplib2http = httplib2.Http()url = 'http://www.example.com/login' body = {'USERNAME': 'foo', 'PASSWORD': 'bar'}headers = {'Content-type': 'application/x-www-form-urlencoded'}response, content = http.request(url, 'POST', headers=headers, body=urllib.urlencode(body))headers = {'Cookie': response['set-cookie']}url = 'http://www.example.com/home' response, content = http.request(url, 'GET', headers=headers)
2) Python3中执行
#!/usr/bin/python3import urllib.parseimport httplib2http = httplib2.Http()url = 'http://www.example.com/login' body = {'USERNAME': 'foo', 'PASSWORD': 'bar'}headers = {'Content-type': 'application/x-www-form-urlencoded'}response, content = http.request(url, 'POST', headers=headers, body=urllib.parse.urlencode(body))headers = {'Cookie': response['set-cookie']}url = 'http://www.example.com/home' response, content = http.request(url, 'GET', headers=headers)
4、Python3使用http.client执行
相关文档:https://docs.python.org/3/library/http.client.html
#!/usr/bin/env python3import http.clientimport jsonprint("\n GET example")conn = http.client.HTTPSConnection("httpbin.org")conn.request("GET", "/get")response = conn.getresponse()data = response.read().decode('utf-8')print(response.status, response.reason)print(data)print("\n POST example")conn = http.client.HTTPSConnection('httpbin.org')headers = {'Content-type': 'application/json'}post_body = {'text': 'testing post'}json_data = json.dumps(post_body)conn.request('POST', '/post', json_data, headers)response = conn.getresponse()print(response.read().decode())print(response.status, response.reason)print("\n PUT example ")conn = http.client.HTTPSConnection('httpbin.org')headers = {'Content-type': 'application/json'}post_body ={'text': 'testing put'}json_data = json.dumps(post_body)conn.request('PUT', '/put', json_data, headers)response = conn.getresponse()print(response.read().decode(), response.reason)print(response.status, response.reason)print("\n delete example")conn = http.client.HTTPSConnection('httpbin.org')headers = {'Content-type': 'application/json'}post_body ={'text': 'testing delete'}json_data = json.dumps(post_body)conn.request('DELETE', '/delete', json_data, headers)response = conn.getresponse()print(response.read().decode(), response.reason)print(response.status, response.reason)