Python_urllib相关的应用(证书、超时、文件上传、url编码)

urllib相关的应用(证书、超时、文件上传、url编码)

一、证书相关、禁止警告信息

#coding:utf-8
import requests
from requests.packages import urllib3

urllib3.disable_warnings()  #从urllib3中消除警告
response = requests.get('https://www.12306.cn',verify=False)  #证书验证设为FALSE
print(response.status_code)

运行:

二、超时异常

1、设置超时时间较短

import urllib.request
response=urllib.request.urlopen('http://httpbin.org/get',timeout=0.1)  #设置超时时间为0.1秒,将抛出异常
print(response.read())
#运行结果
#urllib.error.URLError: <urlopen error timed out>

运行:

 

 2、设置超时时间较长,捕获异常

import urllib.request
from urllib import error
import socket
try:
    response=urllib.request.urlopen('http://httpbin.org/get',timeout=0.1)
    print(response.read())
except error.URLError as e:
    if isinstance(e.reason, socket.timeout):  # 判断对象是否为类的实例
        print(e.reason)  # 返回错误信息

#运行结果
#timed out

运行:

 

 三、上传文件

>>> url = 'http://httpbin.org/post'
>>> files = {'file': ('report.xls', open('report.xls''rb'), 'application/vnd.ms-excel', {'Expires''0'})}

>>> r = requests.post(url, files=files)
>>> r.text
{
  ...
  "files": {
    "file""<censored...binary...data>"
  },
  ...

 

四、可实现编码(URL编码)

from urllib import parse
print (parse.quote('http://www.baidu.com')) #未编码斜杠
print (parse.quote_plus('http://www.baidu.com'))  #编码斜杠

 

 

#coding:utf-8
import urllib
import urllib.parse
import urllib.request
param={'spam':1,'eggs':2,'bacon':0}
print (u"初始参数")
print (param)
params= urllib.parse.urlencode(param)
print (u"编码后的参数")
print (params)
url="http://python.org/query?%s" % params
print (u"最终get请求")
print ('urllib.request.urlopen("http://python.org/query?%s" % params)')
print (u"最终post请求方式")
print ('urllib.request.urlopen("http://python.org/query",parmas)')

 

posted @ 2019-10-20 18:37  翻滚的小强  阅读(336)  评论(0编辑  收藏  举报