"""
############# 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)