Python爬虫学习第三天--requests模块---post请求

爬虫学习第三天—requests模块—post请求

那些地方需要用到post请求?
- 登录注册( 在web工程师看来POST 比 GET 更安全,url地址中不会暴露用户的账号密码等信息)
- 需要传输大文本内容的时候( POST 请求对数据长度没有要求)

1、requests发送post请求的方法

response = requests.post(url, data)
	data参数接收一个字典
	requests模块发送post请求函数的其它参数和发送get请求的参数完全一致

2、post请求练习

通过百度翻译进行练习

01 思路分析

1、抓包确定请求url地址

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
2、确定请求的参数
在这里插入图片描述
在这里插入图片描述

3、确定返回数据的位置,所以经过以上分析,我们先一sug的url来模拟做验证

在这里插入图片描述

4、模拟浏览器获取数据

02、实例实现

import argparse
import requests
class BaiduTranslate(object):

    def __init__(self,word):
        self.url = "https://fanyi.baidu.com/sug"
        # self.url = "https://fanyi.baidu.com/v2transapi"
        self.data = {"kw": word}
        self.headers = {
            'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Mobile Safari/537.36'
        }



    # @classmethod
    # def parameters(cls):
    #     # 传递参数
    #     parser = argparse.ArgumentParser()
    #     parser.add_argument("--key", "-key", help="指定角色")
    #     key_value = parser.parse_args()
    #     return key_value

    def run(self):
        # 翻译

        response = requests.post(self.url, data=self.data,headers=self.headers)   # 模拟请求post方式
        # print(response.json())
        try:     # 解析获取的数据
	        for item in response.json()['data']:
	            if self.data.get('kw') == item.get('k'):   # 当输入的数据和响应中输入的数据相同时提取输出的数据
	                print(item.get('v'))
	                return item.get('v')
	     except:
	     	return "异常"


if __name__ == '__main__':
    word = "hello"   # 这里可以改成参数输入的方式,上面代码也需要打开注释
    # word = input('请输入要查询的单词')
    
    baidu = BaiduTranslate(word)
    baidu.run()

03、运行结果

在这里插入图片描述

在这里插入图片描述

3、post数据来源

1、固定值              抓包比较不变值
2、输入值              抓包比较根据自身变化值
3、预设值              静态文件中的预设值,需要提前从静态html中获取
4、预设值             发请求,需要对指定地址发送请求
5、在客户端生成  分析js,模拟生成数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值