笔记--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

            --引用cookie
                    COOKIE = set_cookie()
                    res = requests.get(url=url, cookies=COOKIE, headers=header, verify=False) #verify=False,如果是https,可以使用此项忽略设置
                    #certificate verify failed: unable to get local issuer certificate,需要设置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)
        
            ---键值对header转字典(requests所需格式)---
                方式1:正则:
                    (.*):\s(.*)替换为"$1":"$2",
                方式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
    
            注意:1,http和windows使用'\r\n'作为换行分隔符,linux使用'\n'作为行分隔符
                2,URL中特殊字符:
                    特殊含义                                          十六进制
                    + 表示空格(在URL中不能使用空格)                     %2B                     
                    / 分隔目录和子目录                                  %2F                     
                    ? 分隔实际的URL和参数                               %3F                     
                    # 表示书签                                         %23                     
                    & URL中指定的参数间的分隔符                          %26                     
                    = 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='')

猜你喜欢

转载自blog.csdn.net/weixin_42573277/article/details/114849356
今日推荐