900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 爬虫之requests模块发送post请求

爬虫之requests模块发送post请求

时间:2018-10-14 18:39:44

相关推荐

爬虫之requests模块发送post请求

爬虫之requests模块发送post请求

思考:哪些地方我们会用到POST请求?

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

所以同样的,我们的爬虫也需要在这两个地方会去模拟浏览器发送post请求

4.1 requests发送post请求的方法

response = requests.post(url, data)

data参数接收一个字典

requests模块发送post请求函数的其它参数和发送get请求的参数完全一致

4.2 POST请求练习

【post数据来源:1.固定值:抓包比较不变值;2.输入值:抓包比较根据自身变化值;3.预设值-静态文件:需要提前从静态html中获取;4.预设值-发请求:需要对指定的地址发送请求;5.在客户端生成的:分析js,模拟生成数据】

下面面我们通过金山翻译的例子看看post请求如何使用:

地址:/

思路分析

抓包确定请求的url地址

2.确定请求的参数

3.确定返回数据的位置

4.模拟浏览器获取数据

4.2.3 抓包分析的结论

url地址:/

请求方法:POST

请求所需参数:

data = {'f': 'auto', # 表示被翻译的语言是自动识别't': 'auto', # 表示翻译后的语言是自动识别'w': '人生苦短' # 要翻译的中文字符串}

pc端User-Agent:

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36

4.2.4 代码实现

了解requests模块发送post请求的方法,以及分析过移动端的百度翻译之后,我们来完成代码

import requestsimport jsonclass King(object):def __init__(self, word):self.url = "/ajax.php?a=fy"self.word = wordself.headers = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"}self.post_data = {"f": "auto","t": "auto","w": self.word}def get_data(self):response = requests.post(self.url, headers=self.headers, data=self.post_data)# 默认返回bytes类型,除非确定外部调用使用str才进行解码操作return response.contentdef parse_data(self, data):# 将json数据转换成python字典dict_data = json.loads(data)# 从字典中抽取翻译结果try:print(dict_data['content']['out'])except:print(dict_data['content']['word_mean'][0])def run(self):# url# headers# post——data# 发送请求data = self.get_data()# 解析self.parse_data(data)if __name__ == '__main__':# king = King("人生苦短,及时行乐")king = King("China")king.run()# python标准库有很多有用的方法,每天看一个标准库的使用

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。