Python中requests库基本用法

request库

一、安装

进入cmd进行安装

pip install requests

二、各种请求方式

GET: 请求指定的页面信息,并返回实体主体。
HEAD: 只请求页面的首部。
POST: 请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。
PUT: 从客户端向服务器传送的数据取代指定的文档的内容。
DELETE: 请求服务器删除指定的页面。

get 和 post比较常见 GET请求将提交的数据放置在HTTP请求协议头中
POST提交的数据则放在实体数据中

三、GET发送请求与传递参数

通过案例进行分析

import requests
r = requests.get(url='https://www.baidu.com/')  #最基本的GET请求
print(r.status_code)  #获取返回状态
#带参数的GET请求
r = requests.get(url='https://www.baidu.com/',params={'wd':'python'})
print(r.url)
print(r.text)  #打印解码后返回的数据

1、基本的GET请求

import requests

response = requests.get('http://httpbin.org/get')
print(response.text)

返回值:

{
  "args": {}, 
  "headers": {
    "Accept": "*/*", 
    "Accept-Encoding": "gzip, deflate", 
    "Host": "httpbin.org", 
    "User-Agent": "python-requests/2.23.0", 
    "X-Amzn-Trace-Id": "Root=1-5ee2e336-3515bbe3b6c7312d01fa9d50"
  }, 
  "origin": "61.140.208.227", 
  "url": "http://httpbin.org/get"
}

2、带参数的GET请求

带参数的GET请求是在查询的时候往URL里面传递数据,传递进入之后会以http://httpbin.org/get?key=val格式存在,requests允许使用params作为参数,以字符串字典的方式传入数据,传入多个数据后面用&号进行连接http://httpbin.org/get?name=germey&age=22(下例)

传入参数name和age

import requests

response = requests.get(url='http://httpbin.org/get',params={'name':'germey','age':'22'})
print(response.text)

或者

import requests
data={
    'name':'germey',
    'age':'22'
}
response = requests.get(url='http://httpbin.org/get',params=data)
print(response.text)
print(response.url)

URL:

http://httpbin.org/get?name=germey&age=22

text返回值:

{
  "args": {
    "age": "22", 
    "name": "germey"
  }, 
  "headers": {
    "Accept": "*/*", 
    "Accept-Encoding": "gzip, deflate", 
    "Host": "httpbin.org", 
    "User-Agent": "python-requests/2.23.0", 
    "X-Amzn-Trace-Id": "Root=1-5ee2e43e-8736c0b95c1edef49aff4848"
  }, 
  "origin": "61.140.208.227", 
  #url
  "url": "http://httpbin.org/get?name=germey&age=22"
}

3、GET请求的响应

r.status_code #响应状态码,200是正常访问
r.content #响应体的二进制
r.text #字符串方式的响应体,响应体的HTML文本
r.headers #以字典对象存储服务器响应头,但是这个字典比较特殊,字典键不区分大小写,若键不存在则返回None
r.encoding  #获取编码方式
r.apparent_encoding  #备选编码方式
#*特殊方法*#
r.json() #Requests中内置的JSON解码器
r.raise_for_status() #失败请求(非200响应)抛出异常

(1)、响应体

r.content
r.text

import requests
headers = {
 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'
}
response = requests.get(url='https://github.com/favicon.ico',headers=headers)
print(response.content)  #返回页面对应的二进制
print(response.text)     #返回页面对应的字节编码

比较长就不贴上来了

(2)、请求头headers

在访问某些网站的时候,网站一般都会有反爬虫机制,这个时候我们需要模拟正常的认为浏览让网站觉得我们不是爬虫,是正常的认为在浏览,这时网站就会对你的需求进行正常的响应,所以我们需要对请求头headers进行设置

headers = {
 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'
}

三、POST请求(data参数)

了解完get请求,post请求是往网页上传数据

1、最基本的post请求

import requests
response = requests.post(url,data=data)

2、传入data数据

对于post请求来说,一般需要传入一些参数,我们可以使用data这个参数传入数据

import requests

formdata = {
    "type": "AUTO",
    "i": "i love python",
    "doctype": "json",
    "xmlVersion": "1.8",
    "keyfrom": "fanyi.web",
    "ue": "UTF-8",
    "action": "FY_BY_ENTER",
    "typoResult": "true"
}

url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=null"

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"}

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

print(response.text)

# 如果是json文件可以直接显示
print(response.json())
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值