Requests库的主要方法

Requests库的主要方法

     Requests库的7个主要方法

+---------------------------------------+---------------------------------------------------------------------------+

| 方法   + 说明               |

|   requests.request() +  构造一个请求,支撑一下个方法的基础方法 |

|  requests.get()      + 获取HTML网页的主要方法,对应于HTTP的GET   |

|  requests.head()      +  获取HTML网页信息头部的方法,对应于HTTP的HEAD |

|  requests.put()     +  向HTML网页提交POST请求方法,对应HTTP的POST |

|  requests.patch()     +  向HTML网页提交局部修改请求,对应于HTTP的PATCH |

|  requests.delete()     +  向HTML页面提交删除请求,对应于HTTP的DELETE | 

+---------------------------------------+----------------------------------------------------------------------------+

 

 

HTTP协议

 

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

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

port:端口号,取胜端口有为80

path:请求资源的路径

 

HTTP协议 URL实例:

http://www.bit.edu.cn

http://220.181.111.188/duty

 

HTTP URL的理解:

URL是通过HTTP协议存取资源的Internet路径,

一个URL对应一个数据资源

 

HTTP协议对资源的操作

+------------------------------------+------------------------------------------------------------------------------------------------------+

|  GET         +   请求获取URL位置的资源                         |

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

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

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

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

|  delete        +  请求删除URL位置存储的资源                       |

+----------------------------------+--------------------------------------------------------------------------------------------------------+   

r = requests.head('http://httpbin.org/get')r.headersr.text#向URL POST一个字典自动编码为from(表单)payload ={'key1':'value1','key2':'value2'}r = requests.post('http://httpbin.org/post',data = payload)print(r.text)
#向URL POST一个字符串 自动编码为datar = requests.put('http://httpbin.org/put',data = 'ABC')print(r.text)
#将原有数据覆盖掉payload ={'key1':'小可爱','key2':'珂珂珂'}r = requests.put('http://httpbin.org/put',data = payload)print(r.text)

#requests库 虽然标准的urllib库中模块已经包含了平时我们使用的大部分功能,但API终究还是不够友好,request再次基础上进行了封装,使用起来更加简洁

安装 pip install requests 其中文文档和github源码可以自己百度 中文文档:https://2.python-requests.org//zh_CN/latest/index.html github源码 :https://github.com/psf/requests

1.发送GET请求 response = request.get(‘http://www.baidu.com’) 2.添加参数 get 请求是将数据放在url中,我们可以通过指定params和headers参数来填充请求参数 response = request.get(‘http://www.baidu.com’, params = cs, headers = head) 3.查询参数 response对象有很多参数 .text 根据猜测自动将返回的字节流数据进行解码成unicode格式的数据,有时可能会因为判断失误而造成乱码 .content 返回网络传输的原始的字节流(byte)数据,一般网络传输和硬盘存储的都是字节流数据 .url 查看当前请求的URL地址 .encoding 查看相应头部字符编码 .status_code 查看响应吗

import requests
from urllib import parse

head = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}

cs = {'wd':'中国'}

response = requests.get('https://www.baidu.com/s?', headers = head, params = cs)

with open('../laji/w.html', 'w', encoding = 'utf-8') as fp:
  fp.write(response.content.decode('utf-8'))

print(parse.parse_qs(response.url))
print(response.encoding)
print(response.status_code)
123456789101112131415

1.发送POST请求 与GET唯一不同的是发送的数据变成了DATA

import requests
url = 'https://www.lagou.com/jobs/positionAjax.json?city=%E5%8C%97%E4%BA%AC&needAddtionalResult=false'
head = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
'Referer':'https://www.lagou.com/jobs/list_python?labelWords=&fromSearch=true&suginput=',
'Cookie':''
}
data = {'first':'true',
      'pn':'1',
      'kd':'python'
      }

response = requests.post(url, headers = head, data = data)

print(type(response.json()))
print(response.json())
123456789101112131415

如果返回的是一个js数据,可以使用json去处理。可以使用py内置的josn去处理,也可使使用调用.json方法处理,json的本质是一个字符串,json() 可以直接将网页中的数据以json格式(字典)处理

3.使用代理 在请求方法的时候设置 peosies 参数即可

import requests

url = 'http://httpbin.org/ip'
proxy = {'http':'49.51.193.134:1080'}
response = requests.get(url, proxies = proxy)

print(response.text)
1234567

比较一下IP,发现IP不同了,代理成功

4.取得cookie response.cookies.get_dict() 如上可以取得cookies, 如果想按照字典的方式打印,可以使用get_dict()方法

session web 里保存在服务器里数据的一种机制,这里的session 是原本会议的意思,

import requests

head = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}

data = {
      'email':'ID',
      'password':'密码'
      }

login_url = "http://www.renren.com/ajaxLogin/login?"
url = "http://www.renren.com/972992926/newsfeed/photo"

session = requests.Session()
session.post(login_url, data = data, headers = head)

response = session.get(url, headers = head)
with open('../laji/w.html', 'w', encoding = 'utf-8') as fp:
  fp.write(response.text)
123456789101112131415161718

5.处理不合法的SSL证书 有些网站是走https协议的,但协议前打了个X,说明该网站的证书不是官方认证的,比如自己写的什么的。 此时,需要在请求的时候将,verify = false 设置一下。

response = session.get(url, headers = head, verify = False)
posted @   Covel  阅读(137)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示