wcq15759797758 发表于 2021-6-24 18:47:42

requests模块(一)

本帖最后由 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/ul/li/a/span/text()')
    print(name)# 打印用户名
四.使用Session回话请求
# 使用Session回话请求
import requests      # 导入requests模块
s = requests.Session()# 创建会话对象
data={'LoginForm': 'asd112233', 'LoginForm': '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(三)介绍高级网络模块请求

xiaosi4081 发表于 2021-6-24 19:06:41

sofa{:10_327:}

fish_nian 发表于 2021-6-24 19:28:36

{:10_298:}不错

hornwong 发表于 2021-6-25 10:17:11

感谢分享!

975050208@qq.co 发表于 2021-6-25 10:30:29

学习

懒狗李 发表于 2021-6-25 10:56:36

{:10_254:}

kevin.zhou 发表于 2021-6-25 11:10:39

{:10_245:}

peak6009 发表于 2021-6-25 11:44:01

{:10_249:}

Dragon910623 发表于 2021-6-25 13:31:28

参考一下谢谢

龙舞九天 发表于 2021-6-26 06:23:14

{:5_95:}

sunwenwu123 发表于 2021-6-26 09:42:59

学习了

一只咸鱼123 发表于 2021-6-26 09:59:57

感谢

Dragon910623 发表于 2021-6-26 13:42:16

谢谢分享

私はり 发表于 2021-6-26 15:17:30

感谢分享

Daniel_Zhang 发表于 2021-6-26 15:42:05

{:10_254:}

超级玛尼哄 发表于 2021-6-27 00:06:35

{:10_279:}

O2H2O 发表于 2021-7-2 11:50:20

厉害!

1835575828 发表于 2021-7-3 16:03:20

邓CX 发表于 2021-7-3 16:15:11

{:5_103:}

Sungne_jer 发表于 2021-7-3 16:17:54

yyds
页: [1] 2 3
查看完整版本: requests模块(一)