鱼C论坛

 找回密码
 立即注册
查看: 10525|回复: 43

[技术交流] requests模块(一)

[复制链接]
发表于 2021-6-24 18:47:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 wcq15759797758 于 2021-6-24 20:14 编辑

一. requests的使用  
import requests    # 导入网络请求模块requests

# 发送GET网络请求  (带params参数 发请求)   如不带参数就把 params=data 删除
data = {'wd': '美女'}  #  百度搜索带有的参数
response = requests.get('https://www.baidu.com/s?',params=data)   #GET 与POST的请求参数分别是params和data  不要参数填写错误
print('响应状态码为:',response.status_code)  # 打印状态码
print('请求的网络地址为:',response.url)          # 打印请求url
print('头部信息为:',response.headers)      # 打印头部信息
print('cookie信息为:',response.cookies)      # 打印cookie信息

# 发送网络请求(进行编码)  进行编程中文才不会乱码
response.encoding='utf-8'    # 对响应结果进行utf-8编码
print(response.text)         # 以文本形式打印网页源码

#发送百度图片链接 打印二进制数据 并生成图片
response_img = requests.get('https://www.baidu.com/img/flexible/logo/pc/result.png')
#print(response_img.content)                # 打印二进制数据
with open('百度logo.png','wb')as f:   # 通过open函数将二进制数据写入本地文件
    f.write(response_img.content)          # 写入

二. requests的使用  (发送POST)
import requests    # 导入网络请求模块requests
import json        # 导入json模块

# 字典类型的表单参数    注意:POST请求中data参数的数据的格式也可以是列表、元组或是JSON  实例如下
#data字典形式
data = {'1': '能力是有限的,而努力是无限的。','2':'星光不问赶路人,时光不负有心人。',}

#data元组形式
#data = (('1','能力是有限的,而努力是无限的。'),('2','星光不问赶路人,时光不负有心人'))

#data列表形式
#data = [('1','能力是有限的,而努力是无限的。'),('2','星光不问赶路人,时光不负有心人')]

#请求头 UA设置
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3870.400 QQBrowser/10.8.4405.400'}
# 发送网络请求
response = requests.post('http://httpbin.org/post',data=data,headers=headers)
response_dict = json.loads(response.text)      # 将响应数据转换为字典类型
print(response_dict)                             # 打印转换后的响应数据

三.使用cookies 发起网络请求
import requests  # 导入网络请求模块
from lxml import etree  # 导入lxml模块
#使用cookies 发起网络请求
cookies = 'll="118205"; bid=VXEqP8os6CI; __utmz=30149280.1624499543.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); dbcl2="240485353:xkFCkBPvm00"; __gads=ID=939927e29325b086:T=1624499934:S=ALNI_MYGkDFzwid5_oXRDxzrT8Dqp65Hgg; push_noty_num=0; push_doumail_num=0; __utmv=30149280.24048; ck=Wvqu; __utmc=30149280; _pk_ses.100001.8cb4=*; ap_v=0,6.0; __utma=30149280.1504183362.1624499543.1624499543.1624513318.2; __utmt=1; _pk_id.100001.8cb4=3254b4dad66c2826.1624499542.2.1624513320.1624500856.; __utmb=30149280.4.10.1624513318'
headers = {'Host': 'www.douban.com',
           'Referer': 'https://www.baidu.com/',
           'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
                         'AppleWebKit/537.36 (KHTML, like Gecko) '
                         'Chrome/72.0.3626.121 Safari/537.36'}
# 创建RequestsCookieJar对象,用于设置cookies信息
cookies_jar = requests.cookies.RequestsCookieJar()
for cookie in cookies.split(';'):
    key, value = cookie.split('=', 1)
    cookies_jar.set(key, value)  # 将cookies保存RequestsCookieJar当中
# 发送网络请求
response = requests.get('https://www.douban.com/',headers=headers, cookies=cookies_jar)
if response.status_code == 200:  # 请求成功时
    html = etree.HTML(response.text)  # 解析html代码
    # 获取用户名  #这里用了xpath
    name = html.xpath('//*[@id="db-global-nav"]/div/div[1]/ul/li[2]/a/span[1]/text()')
    print(name[0])  # 打印用户名

四.使用Session回话请求
# 使用Session回话请求
import requests        # 导入requests模块
s = requests.Session()  # 创建会话对象
data={'LoginForm[username]': 'asd112233', 'LoginForm[password]': 'asd445566'}  # 创建用户名、密码的表单数据
# 发送登录请求
response =s.post('https://www.xbiquge.la/login.php?jumpurl=https://www.xbiquge.la/',data=data)
response2=s.get('https://www.xbiquge.la/modules/article/bookcase.php')   # 发送登录后页面请求 (我的书架)
print('登录信息:',response.text)                # 打印登录信息
print('登录后页面信息如下:\n',response2.text)    # 打印登录后的页面信息

五.访问网页是弹出的登录验证
import requests          # 导入requests模块
from requests.auth import HTTPBasicAuth  # 导入HTTPBasicAuth类
#访问网页的时候 跳出的登录界面
# 定义请求地址
url = 'http://sck.rjkflm.com:666/spider/auth/'
ah = HTTPBasicAuth('admin','admin')      # 创建HTTPBasicAuth对象,参数为用户名与密码
response = requests.get(url=url,auth=ah) # 发送网络请求
if response.status_code==200:            # 如果请求成功
    print(response.text)                 # 打印验证后的HTML代码

六.网络超时与异常
import requests  # 导入网络请求模块
# 导入requests.exceptions模块中的三种异常类
from requests.exceptions import ReadTimeout,HTTPError,RequestException
# 循环发送请求50次
for a in range(0, 50):
    try:    # 捕获异常
        # 设置超时为0.1秒
        response = requests.get('https://www.baidu.com/', timeout=0.1)
        print(response.status_code)                                        # 打印状态码
    except ReadTimeout:                                                     # 超时异常
        print('timeout')
    except HTTPError:                                                       # HTTP异常
        print('httperror')
    except RequestException:                                               # 请求异常
        print('reqerror')

七.使用requests上传文件
import requests                   # 导入网络请求模块
bd = open('百度logo.png','rb')     # 读取指定文件
file = {'file':bd}                 # 定义需要上传的图片文件
#设置UA
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3870.400 QQBrowser/10.8.4405.400'}
# 发送上传文件的网络请求
response = requests.post('http://httpbin.org/post',files = file,headers=headers)
print(response.text)     #能看到传上去的图片转换为了Base64的编码形式          # 打印响应结果

后续附上requests(二)介绍 代理IP UA浏览器伪装     requests(三)介绍高级网络模块请求  

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
nizitao + 5 + 5 + 3

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-6-24 19:06:41 | 显示全部楼层

回帖奖励 +1 鱼币

sofa
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-6-24 19:28:36 | 显示全部楼层

回帖奖励 +1 鱼币

不错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-6-25 10:17:11 | 显示全部楼层

回帖奖励 +1 鱼币

感谢分享!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-25 10:30:29 | 显示全部楼层

回帖奖励 +1 鱼币

学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-6-25 10:56:36 | 显示全部楼层

回帖奖励 +1 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-6-25 11:10:39 | 显示全部楼层

回帖奖励 +1 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-6-25 11:44:01 | 显示全部楼层

回帖奖励 +1 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-6-25 13:31:28 | 显示全部楼层

回帖奖励 +1 鱼币

参考一下谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-26 06:23:14 | 显示全部楼层

回帖奖励 +1 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-6-26 09:42:59 | 显示全部楼层

回帖奖励 +1 鱼币

学习了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-26 09:59:57 | 显示全部楼层

回帖奖励 +1 鱼币

感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-6-26 13:42:16 | 显示全部楼层
谢谢分享
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-26 15:17:30 | 显示全部楼层

回帖奖励 +1 鱼币

感谢分享
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-26 15:42:05 | 显示全部楼层

回帖奖励 +1 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-6-27 00:06:35 | 显示全部楼层

回帖奖励 +1 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-2 11:50:20 | 显示全部楼层

回帖奖励 +1 鱼币

厉害!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-3 16:03:20 | 显示全部楼层

回帖奖励 +1 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-3 16:15:11 | 显示全部楼层

回帖奖励 +1 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-3 16:17:54 | 显示全部楼层

回帖奖励 +1 鱼币

yyds
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-14 15:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表