day02-发送post请求

本文介绍如何使用Python的requests库发送POST请求,包括构造请求体、解析响应数据及使用session进行状态保持的方法,示例展示了向金山翻译API发送请求及登录GitHub的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.发送post请求方法

import requests

url=""
response=requests.post(url,data)
#data是一个字典
向金山翻译发送post请求

import requests
import json
class King(object,word):
    #初始化
    def __init__(self,word):
        self.url="https://ifanyi.iciba.com/index.php?c=trans&m=fy&client=6&auth_user=key_web_fanyi&sign=ac4d9d34d3a63952"
        self.headers={
            "User-Agent":"Mozilla / 5.0(Windows NT 10.0; Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 114.0.0.0Safari / 537.36"
             }
        self.data={
                'f':"auto",
                't':"auto",
                'w':word
        }
    def post_data(self):
        #使用post方法发送一个post请求,data为请求体的字典
        response = requests.post(self.url,data=self.data,headers=self.headers)
        return response.content

    def parse_data(self,data):
        dict_data=json.loads(data)
        try:
            print(dict_data['content']['out'])
        except:
            print(dict_data['content']['word_mean'][0])
    def run(self):
        #编写爬虫逻辑
        #url
        #headers
        #data字典发送post请求
        #发送请求获取响应

        response=self.post_data()
        print(response)
        #数据解析
        self.parse_data(response)
#实例化
if __name__=="__main__":
    word=input('请输入要翻译的单词')
    king=King(word)
    king.run()

2.post数据来源

1.固定值:抓包比较,不变化的值

2.输入值:抓包比较,根据自身变化值

3.预设值-静态文件中:需要提前从静态html中获取,通过正则获取,构造到data字典中

4.预设值-发请求:需要对指定地址发送请求

5.在客户端生成的:分析js,模拟生成数据

3.requests.session进行状态保持

requests模块中的Session类能够自动处理发送请求获取响应过程中产生的cookie,进而达到状态保持的目的

resqusts.session的作用: 自动处理cookie,即下一次请求会带上前一次的cookie requests.session的适应场景: 自动处理连续的多次请求过程中产生的cookie

登录github

import requests
import re

def login():
    #session
    session=requests.session()

    #headers
    session.headers={
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
    }
    #url1获取token
    url1 = "https://github.com/login"
    #发送请求获取响应
    res_1=session.get(url1).content.decode()
     #正则提取
    #导入正则模块
    token=re.findall('name="authenticity_token" value=".*?" />')[0]  #findall获取的是列表
    print(token)

    #url2登录
    url2 = "https://github.com/session"
       #构建表单数据
    data={
        #抓包得到的字典from data 表单数据
    }
       #发送请求登录
    session.post(url2,data=data)
    #url3验证
    url3=''
    response=session.get(url3)
    with open('github.html','wb')as f:
        f.write(response.content)

if __name__=='__main__':
    login()

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值