zoukankan      html  css  js  c++  java
  • request库使用

    一、requests.get(url,parama=None,**kwargs)

    url:拟获取页面的url链接

    parma:url中的额外参数,字典或字典流格式,可选

    **kwargs:12个控制访问参数

    二、Response对象属性

    r.status_code:    http请求的返回状态,200表示连接成功,404表示失败(除了200外都是属于失败的)

    r.text:        http相应内容的字符串形式,即,URL对应的页面内容

    r.encoding:     从HTTP hradet 中猜测的相应内容编码方式

    r.apparent_encoding:  从内容中分析出的相应内容编码方式(备选编码方式)

    r.content:      HTTP响应内容的二进制形式

    注意:r.encoding:如果header中不存在charset,则认为编码为ISO-8859-1

       r.apparent_encoding:根据网页内容分析出的编码方式

    三、理解Request库的异常

    requests.ConnectioError:    网络连接错误异常,如dns查询失败、拒绝连接等

    requests.HTTPError:      HTTP错误异常

    requests.URLRequired:      URL缺失异常

    requests.TooManyRedirects:   超过最大重定向次数,产生重定向异常

    requests.ConnectTimeout:    连接远程服务器超时异常

    requests.Timeout:         请求URL超时,产生超时异常

    r.raise_for_status()        如果不是200,产生异常request.HTTPError

    四、Request库的7个主要方法

    1、request.request()    构造一个请求,支撑一下各方法的基础方法

    requests.get(method,url,**kwargs)

    ①method:请求方法,对应get/put/post等7种

    ②url:拟获取页面的URL链接

    ③**kwargs:控制访问参数,共13个

    params:字典或字节序列,作为参数增加到URL中

    kw = {'key1':'value1' , 'key2':'value2'}
    r = requests.request('GET','http://python123.io/ws',params=kv)
    print(r.url)

    data:字典、字节序列或者文件对象,作为Request的内容

    kw={'key1':'value1','key2':'value2'}
    r=requests.request('POST','http://python123.io/ws',data=kw)
    body='注册内容'
    r=requests.request('POST','http://python123.io/ws',data=body)

    json:JOSN格式的数据,作为Request的内容

    kv={'key1':'value1','key2':'value2'}
    r=requests.request('POST','http://python123.io/ws',json=kv)

    headers:字典,http定制头

    hd={'user_agent':'chram/10'}
    r=requests.request('POST','http://python123.io/ws',haders=hd)

    cookie:字典或Cookiejar,Request中的cookie

    auth:元祖,支持HTTP认证功能

    files:字典类型,传输文件,向某个链接提交某个文件

    fs={'file':open('data,xls','rb')}
    r=requests.request('POST','http://python123.io/ws',files=fs)

    timeout:设定超时时间,以秒为单位

    r=requests.request('GET','http://python123.io/ws',timeout=10)

    proxies:字典类型,设定访问的代理服务器,可以增加登陆认证

    pxs={'http:'http://user:pass@10.10.10.1:1234'
            'https':'https://10.10.10.1:4321'}
    r=requests.request('GET','http:www.baidu.com',proxies=pxs)                

    allow_redirects:True/False,默认为True,重定向开关

    stream:True/False,默认为True,获取内容立即下载开关

    verify:True/False,默认为True,认证SSL证书开关

    cert:本地SSL证书路径

    2、requests.get()      获取HTML网页的主要方法,对应HTTP的get

    3、requests.head()     获取HTML网页头信息的方法,对应于HTTP的head

    4、requests.post()      向HTML网页提交post请求的方法,对应于HTTP的post

    requests.post(url,data=None,json=None,**kwargs)

    5、requests.put()      向HTML网页提交put请求的方法,对应于HTTP的put

    6、requests.patch()       想HTTP网页提交局部修改请求,对应于HTTP的patch

    7、requests.delete()       向HTTP页面提交删除请求,对应于HTTP的delete

    五、HTTP协议

    1、HTTP,超文本传输协议。

    ①HTTP是基于‘请求与响应’模式的、无状态的应用层协议。

    ②HTTP协议采用URL作为定位网络资源的标识。

    ③URL格式:http://host[:port][path]

    host:合法的Internet主机域名或IP地址

    post:端口号,默认端口好为80

    path:请求资源的路径

    ④HTTP URL的理解:

    URL是通过HTTP协议存取资源的Internet路径,一个URL对应一个数据资源

    六、HTTP协议对资源的操作

    GET      请求获取URL位置的资源

    HEAD      请求获取URL位置资源的响应报告,即获得该资源的头部信息

    POST      请求向URL位置的资源后附加新的数据

    PUT      请求向URL位置储存的一个资源,覆盖原URL位置的资源

    PATCH       请求局部更新URL位置的资源,即改变该处资源的部分内容

    DELETE     请求删除URL位置存储的资源

    七、案例

     1 import requests
     2 import os
     3 
     4 url='https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1580967300997&di=2238943a2e9fbebde4de06e2a3b0951d&imgtype=0&src=http%3A%2F%2Fn.sinaimg.cn%2Fsinacn15%2F275%2Fw640h435%2F20181010%2Fcaba-hkrzvkw4936632.jpg'
     5 hd ={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36'}
     6 file_name = './'
     7 file =  file_name+url.split('cn')[-1]
     8 try:
     9     r = requests.get(url,headers=hd,verify=False) #关闭SSL证书
    10     r.raise_for_status()
    11     # print(r.status_code)
    12     # print(r.text)
    13     #判断文件是否存在,如果文件不存在则创建该文件,如果文件存在则不创建文件
    14     if not os.path.exists(file):
    15         with open(file,'wb') as f:
    16             f.write(r.content)  #保存文件
    17             f.close()
    18             print('文件保存成功')
    19 
    20     else:
    21         print('文件已经存在!')
    22 except:
    23     print('url访问报错')
     1 import requests
     2 
     3 url = 'http://www.ip138.com/iplookup.asp?ip='
     4 hd ={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36'}
     5 ip_address = {'ip':'117.25.45.192'}
     6 
     7 try:
     8     r = requests.get(url+'159.226.8.6',headers=hd)
     9     # print(r.encoding)
    10     r.encoding = r.apparent_encoding    #转换编码方式为内容分析出的相应编码方式
    11     # print(r.status_code)
    12     r.raise_for_status()
    13     print(r.text)
    14 except:
    15     print('爬取失败')
  • 相关阅读:
    关于Git学习-远程库(github) 命令
    关于git的学习
    python-自动化测试结果发送邮件报错(smtplib.SMTPDataError: (554, b'DT:SPM 163……)解决方法
    android SDK- 使用 AVD Manager.exe 创建虚拟机遇到报错 emulator
    性能测试方案大纲-学习笔记
    python + locust 记录一次性能测试的实施
    jmeter 做压测常见问题记录-单台测试机建议最大线程数
    jmeter 调用mysql数据库,使用JDBC请求执行相关SQL
    加解密原理
    SM1,SM2,SM3,SM4刨析
  • 原文地址:https://www.cnblogs.com/zihkj/p/12267765.html
Copyright © 2011-2022 走看看