Notes--python(requests/urllib)

        --------requests--------
            查看request:
                res = requests.post(url=url,headers=headers,data=body_dic)
                print(res.request.__dict__)
                
            urlencode:
                querystring = {"editor": "me", "delimiter": ",", "env": "1"}
                response = requests.post(url,files=file,headers=header,cookies=COOKIE,params=querystring)        #params指定url参数
        
            --设置cookie
                    方法1:
                    sessionRequest = requests.session()
                    sessionRequest.post(url=url, headers=header, data=login_params)
                    c = requests.cookies.RequestsCookieJar()  # 利用RequestsCookieJar获取
                    c.set('cookie-name', 'cookie-value')
                    sessionRequest.cookies.update(c)
                    cookies = sessionRequest.cookies.get_dict()
                    方法2:
                    response = requests.post(url=url, headers=header, data=login_params)
                    cookies = requests.utils.dict_from_cookiejar(response.cookies)
                    return cookies


                    --Reference             cookie COOKIE = set_cookie()
                    res = requests.get(url=url, cookies=COOKIE, headers=header, verify=False) #verify=False, if it is https, you can use this to ignore the setting
                    #certificate verify failed : unable to get local issuer certificate, need to set verify=False

            --session
                from requests import Session    
                session = Session()
                def login(session):
                    header = 
                    # 构造Post请求的form data
                    login_params = 
                    url = 
                    response = session.post(url=url, headers=header, data=login_params)

                def checking_version2(version,session):
                    login(session)
                    url = 
                    header = 
                    body = 
                    bodystr = json.dumps(body)
                    res = session.post(url=url, headers=header,data=bodystr,verify=False )
                    ...
                
            ---form-data上传文件
                def upload_init():
                    url = f'http://test2.mytest.com/deployConfig/upload'
                    header = {"Accept": "application/json, text/plain, */*", "Cache-Control": "no-cache",
                              "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"}
                    # data = {'name':'csvFile'}
                    querystring = {"editor": "wWX651761", "delimiter": ",", "envKlass": "1", "envNode": "THA"}
                    '''原始内容:
                    ------WebKitFormBoundaryHmfE93AP9wAS3TG5
                    Content-Disposition: form-data; name="csvFile"; filename="init.csv_dbc_for_devops.csv"
                    Content-Type: application/vnd.ms-excel


                    ------WebKitFormBoundaryHmfE93AP9wAS3TG5--
                    '''
                    file = {
                        'csvFile':open('init.csv_dbc_for_devops.csv','rb'),            #name为key,value为文件句柄(bytes格式)
                        'Content-Disposition': 'form-data',
                        'Content-Type': 'application/vnd.ms-excel',
                        'filename':"init.csv_dbc_for_devops.csv"
                    }
                    response = requests.post(url,files=file,headers=header,cookies=COOKIE,params=querystring)
                    # print(response.request.__dict__)
                    print(response)
                    print(response.content)
        
            ---Key-value pair header to dictionary (requests format required)---
                Method 1: Regular:
                    (.*):\s(.*) is replaced with "$1":"$2",
                Method 2:
                    def header_hanlder( header):
                        dic = ()
                        for line in header.split('\n'):
                            line = line.strip().replace(':',':', 1)
                            li = line.split(':', maxsplit=1)
                            dic[li[0]] = li[1]
                        # dic = yaml.load(header)
                        return dic
    
            Note: 1. http and windows use'\r\n' as line break separator, linux uses'\ n'as line separator
                2, special characters in URL:
                    Special meaning Hexadecimal
                    + means space (spaces cannot be used in the URL) %2B                     
                    / separate directory and subdirectory %2F                     
                    ? Separate actual URL and parameters %3F                     
                    # means bookmark %23                     
                    & the separator between the parameters specified in the URL %26                     
                    = The value of the parameter specified in the URL %3D
            
        --------urllib------------
            --urllib.parse
                urlencode:
                    In [1]: from urllib import parse

                    In [2]: data = {'a':1,'b':2}

                    In [3]: parse.urlencode(data)
                    Out[3]: 'a=1&b=2'
                    
                urlparse:
                    In [7]: url = 'https://docs.python.org/3.5/search.html?q=parse&check_keywords=yes&area=default'

                    In [8]: parse.urlparse(url)
                    Out[8]: ParseResult(scheme='https', netloc='docs.python.org', path='/3.5/search.html', params='', query='q=parse&check_keywords=yes&area=default', fragment='')

Guess you like

Origin blog.csdn.net/weixin_42573277/article/details/114849356