urllib.request 模块提供了最基本的构造HTTP请求的方法,利用这个模块可以模拟浏览器的请求发起过程,同时还具有处理授权验证、重定向、浏览器Cookie以及其他一些功能。
# urlopen
import urllib.request
response = urllib.request.urlopen("https://www.python.org")
# print(response.read().decode('utf-8'))
print(type(response)) # 输出响应类型
print(response.status) # 输出响应状态
print(response.getheaders()) # 输出响应的头信息
print(response.getheader('Server')) # 输出响应头中的Server的值
urlopen-data 参数使用
# use method of param data
import urllib.parse
import urllib.request
data = bytes(urllib.parse.urlencode({'name':'germey'}), encoding='utf-8')
response = urllib.request.urlopen('https://www.httpbin.org/post', data=data)
print(response.read().decode('utf-8'))
运行结果如下:
urlopen-timeout 参数使用
# use method of param timeout
response = urllib.request.urlopen('https://www.httpbin.org/post', data=data, timeout=0.1)
print(response.read().decode('utf-8'))
这里设置了timeout为0.1秒,运行0.1秒后,服务器依然没有响应,则抛出URLError异常
URLError异常处理
try:
response = urllib.request.urlopen('https://www.httpbin.org/post', data=data, timeout=0.1)
print(response.read().decode('utf-8'))
except urllib.error.URLError as e:
if isinstance(e.reason, socket.timeout):
print("Time out")
后续公众号会发布系列教程,更多内容请关注公众号:程序猿学习日记