ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

requests模块介绍

2022-05-06 21:03:19  阅读:166  来源: 互联网

标签:respone get res 介绍 模块 print requests data


requests模块发送get请求

# 所有语言都可以做爬虫---》python简单一些---》库多
# 模拟发送http请求的库,requests库----》大佬基于python内置库 urllib(麻烦) 封装--》requests

# 安装
pip3 install requests

# 模拟发送get请求
import requests

res=requests.get('https://www.cnblogs.com/liuqingzheng/p/16005866.html')
print(res.text)  # 响应体的内容打印出来了

get请求中携带参数

## 2 get 请求中携带参数
# res=requests.get('https://www.cnblogs.com/liuqingzheng/p/16005866.html',
#                  params={'name':'lqz','age':18}
#                  )
# # ?name=lqz&age=18拼到路径后面
# print(res.text)  # 响应体的内容打印出来了
# url编码和解码
# https://www.baidu.com/baidu?wd=python%20url%E7%BC%96%E7%A0%81%E5%92%8C%E8%A7%A3%E7%A0%81

# 把字段中文编码后转成 name=%E5%88%98%E6%B8%85%E6%94%BF&age=18
# from urllib.parse import urlencode
# d={'name':'刘清政','age':18}
# res=urlencode(d)
# print(res)

# 只想单独对中文编码和解码
from urllib.parse import quote, unquote

# 编码
# name='刘清政'
# res=quote(name)
# print(res)

# 解码
# s='python%20url%E7%BC%96%E7%A0%81%E5%92%8C%E8%A7%A3%E7%A0%81'
# print(unquote(s))

 

携带请求头

# 3 携带请求头
# 携带请求头-->重要的key:
# User-Agent:客户端浏览器的类型版本信息,操作系统版本---》django中如何取出请求头--》META---》中间件--》存到数据库--》饼形图--》统计你们网站近一个月客户端类型
# referer:图片防盗链 Referer: https://www.lagou.com/wn/zhaopin
# 记录的是上一个访问的地址---》反扒:如果上一个访问的地址不是自己的地址,认为不是正常请求就禁止


# header = {
#     'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36',
#     # 'Accept-Encoding': 'gzip, deflate, br',
# }
# res = requests.get('https://dig.chouti.com/',headers=header)
# with open('chouti.html','wb') as f:
#     f.write(res.content)
# print(res.text)

携带cookie

## 本身cookie是请求头中的值,那么就可以执行放在请求头中,但是cookie经常用,也可以单独是一个参数
# 模拟点赞
header = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36',
    # 'Cookie': ""
}
data={
    'linkId': '34934736'
}
# res = requests.post('https://dig.chouti.com/link/vote',data=data,headers=header)
res = requests.post('https://dig.chouti.com/link/vote',data=data,headers=header,cookies={'key':'value'})
print(res.text)

发送post请求模拟登录

#5  模拟登陆某网站
# data = {
#     'username': '616564099@qq.com',
#     'password': 'lqz123',
#     'captcha': 'kyca',
#     'remember': 1,
#     'ref': 'http://www.aa7a.cn/',
#     'act': 'act_login',
# }
# res = requests.post('http://www.aa7a.cn/user.php',data=data)
# print(res.text)
# print(res.cookies) # 登陆成功返回的cookie,这个cookie是登陆过后的,以后拿着这个cookie就可以模拟登陆后操作
#
# res2=requests.get('http://www.aa7a.cn/',cookies=res.cookies)
# print('616564099@qq.com' in res2.text)

# 每次都要手动携带cookie,麻烦,使用requests提供的session 方法

# session=requests.session()
# # 以后需所有请求都用session对象发送,不需要手动处理cookie
# data = {
#     'username': 'ee@qq.com',
#     'password': 'lqz123',
#     'captcha': 'kyca',
#     'remember': 1,
#     'ref': 'http://www.aa7a.cn/',
#     'act': 'act_login',
# }
# res = session.post('http://www.aa7a.cn/user.php',data=data)
# print(res.text)
# print(res.cookies) # 登陆成功返回的cookie,这个cookie是登陆过后的,以后拿着这个cookie就可以模拟登陆后操作
# 
# res2=session.get('http://www.aa7a.cn/')
# print('616564099@qq.com' in res2.text)

响应对象

## 6 响应对象
import requests
respone=requests.get('http://www.jianshu.com')
# respone属性
print(respone.text)  # 返回响应体的文本内容
print(respone.content)# 返回响应体的二进制内容

print(respone.status_code)# 响应状态码
print(respone.headers)# 响应头
print(respone.cookies)# 响应的cookie
print(respone.cookies.get_dict())# 响应的cookie转成字典
print(respone.cookies.items())

print(respone.url) # 请求地址
print(respone.history) # 了解---》如果有重定向,列表,放着重定向之前的地址

print(respone.encoding) # 页面的编码方式:utf-8   gbk
# response.iter_content()  # content迭代取出content二进制内容,一般用它存文件

编码问题

# 请求回来的数据,res.text 打印的时候乱码 ,因为没有指定编码,默认已utf-8编码
# 解决
response.encoding='gbk'

获取二进制数据

# 下载图片,视频
# 下载图片
header={
    'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36'
}

res=requests.get('https://tva1.sinaimg.cn/mw2000/9d52c073gy1h1v6lmny8nj20j60pjtdh.jpg',headers=header)
with open('mv.jpg','wb') as f:
    # f.write(res.content)
    for line in res.iter_content(100):
        f.write(line)

解析json

## 8 json格式解析
import json

data = {
    'cname': '',
    'pid': '',
    'keyword': '上海',
    'pageIndex': 1,
    'pageSize': 10,
}
# res = requests.post('http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword',data=data)
# j = json.loads(res.text)
# print(j['Table'][0]['rowcount'])

res= requests.post('http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword',data=data).json()
print(res['Table'][0]['rowcount'])

ssl认证

# 之前网站,有些没有认证过的ssl证书,我们访问需要手动携带证书
# 跳过证书直接访问
import requests
respone=requests.get('https://www.12306.cn',verify=False) #不验证证书,报警告,返回200
print(respone.status_code)
# 手动携带
import requests
respone=requests.get('https://www.12306.cn',
                     cert=('/path/server.crt',
                           '/path/key'))
print(respone.status_code)

使用代理

proxies = {
    'http': '39.103.217.44:59886', # http或https代理
}
respone=requests.get('https://www.baidu.com',proxies=proxies)

print(respone.status_code)

 

标签:respone,get,res,介绍,模块,print,requests,data
来源: https://www.cnblogs.com/892572624A/p/16230365.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有