Python2.7 网络请求 urllib、urllib2和requests

Python2.7 网络请求 urllib、urllib2和requests

使用 python2.7版本urllib、urllib2和requests发送get请求和post请求

# coding=utf-8
import json
import urllib
import urllib2
import requests

# 发送get请求
def test_urllib_get():
    web_url = 'http://httpbin.org/get'
    data = {
        'name': "xiao",
        'age': 18
    }
    # age=18&name=xiao
    # 转码
    data = urllib.urlencode(data)
    response = urllib.urlopen(web_url + '?' + data, context=headers)
    print response.read()

# 发送post请求
def test_urllib_post():
    web_url = 'http://httpbin.org/post'
    data = {
        'name': "xiao",
        'age': 18
    }
    data = urllib.urlencode(data)
    response = urllib.urlopen(web_url, data=data)
    print response.read()

def test_urllib2_get():
    web_url = 'http://httpbin.org/get'
    data = {
        'name': "xiao",
        'age': 18
    }
    data = urllib.urlencode(data)
    data = web_url + "?%s" % data
    response = urllib2.urlopen(data)
    print response.read()

    # 添加头部
    opener = urllib2.build_opener()
    opener.addheaders = [headers]
    response_opener = opener.open(data)
    print response_opener.read()

def test_urllib2_post():
    web_url = 'http://httpbin.org/post'
    data = {
        'name': "xiao",
        'age': 18
    }
    data = urllib.urlencode(data)
    opener = urllib2.build_opener()
    # 携带头信息
    opener.addheaders = [headers]
    print opener
    response = opener.open(web_url, data=data)
    print response.read()


def test_requests_get():
    data = {
        'name': "xiao",
        'age': 18
    }
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win"
                      "64; x64) AppleWebKit/537.36 (KHTML, like Gecko)"
                      " Chrome/98.0.4758.9 Safari/537.36"
    }
    web_url = 'http://httpbin.org/get'
    response = requests.get(web_url, params=data, headers=headers)
    print response.content


def test_requests_post():
    data = {
        'name': "xiao",
        'age': 18
    }
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win"
                      "64; x64) AppleWebKit/537.36 (KHTML, like Gecko)"
                      " Chrome/98.0.4758.9 Safari/537.36",
    }
    web_url = 'http://httpbin.org/post'
    # "Content-Type": "application/x-www-form-urlencoded",
    # response = requests.post(web_url, data=data, headers=headers)
    # 接受json格式,同 json=data
    response = requests.post(web_url, data=json.dumps(data), headers=headers)
    # 默认"Content-Type": "application/json",
    # response = requests.post(web_url, json=data, headers=headers)
    print response.content


if __name__ == '__main__':
    headers = (
        "User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win"
                      "64; x64) AppleWebKit/537.36 (KHTML, like Gecko)"
                      " Chrome/98.0.4758.9 Safari/537.36"
    )
    test_requests_post()

总结:

​ 在使用这些库时候注意Python版本区别,在python2.7中 urllib2 模块直接导入就可以用,在 python3中urllib2被改为urllib.request等问题.


版权声明:本文为weixin_45454773原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。