其他分享
首页 > 其他分享> > 10.1---Pytho之 urllib.request 回顾

10.1---Pytho之 urllib.request 回顾

作者:互联网

"""
############# urllib.request 回顾 ##############

urllib.request里是一个Python的用于获取的URL(统一资源定位器)模块。
官网详细:
    https://docs.python.org/release/3.2/howto/urllib2.html

urllib.request 方法提供三种不同的请求方式:
一、get 请求:
    方式1: (直接传入url地址)
        urllib.request.urlopen(url)
    方式2: 先创建一个request对象: urllib.request.Request;
            然后将对象放入urlopen()中:urllib.request.uelopen(Request对象);

二、post 请求: 【携带数据访问,(如登录用户名,密码等信息)】
    1.先创建一个 Request对象: urllib.request.Request
    2.将data数据进行格式化转换: data = urllib.parse.urlencode(values)
    3.将请求数据放入Request对象中:urllib.request.Request(url,data)
三、header 添加请求头:
"""
## 先导入urlleb.request url请求包
import urllib.request

## 定义需要访问的url:
url = "http://www.baidu.com"

## 一、get请求
# 方式1:(直接传入url地址)
resp_1 = urllib.request.urlopen(url)  ##直接传入URL地址到request方法中
if resp_1.status == 200:  ##判断访问状态码,200为正常访问
    data_1 = resp_1.read().decode("utf-8")  ##用read()方法读取数据,并且指定读取的字符编码
    # print(data_1)
# 方式2:(request对象封装数据访问)
req_2 = urllib.request.Request(url)  ##创建request对象,并封装访问地址;
resp_2 = urllib.request.urlopen(req_2)  ##用urlopen() 方法,打开封装的地址:
if resp_2.status == 200:
    data_2 = resp_2.read().decode("utf-8")
    # print(data_2)

## 二、 post请求
data = {"name": "崽崽", "age": "13"}  ##指定访问请求头信息;
en_data = urllib.parse.urlencode(data)  ##用解析方法:parse.urlencode(),对刚才指定的信息进行格式化;
req = urllib.request.Request(url, en_data.encode("utf-8"))  ##往request对象中封装url网址,和请求信息,请求信息需要转码;
resp = urllib.request.urlopen(req)  ##用urlopen()方法,携带封装信息,打开指定网址;
if resp.status == 200:
    data_out = resp.read().decode("utf-8")
    # print(data_out)

## 三、herder 添加请求头 (官网例子)
import urllib.parse
import urllib.request

# url = 'http://www.someserver.com/cgi-bin/register.cgi' ##官网的这个网址访问超时,暂时还用百度网址测试
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
values = {'name': 'Michael Foord',
          'location': 'Northampton',
          'language': 'Python'}
headers = {'User-Agent': user_agent}

data = urllib.parse.urlencode(values)
req = urllib.request.Request(url, data.encode("utf-8"), headers)
response = urllib.request.urlopen(req)
the_page = response.read().decode("utf-8")
print(the_page)

标签:10.1,Pytho,##,resp,request,urllib,url,data
来源: https://blog.csdn.net/qingtingwhk/article/details/116465182