工作中,如果你想要发送一些格式为表单形式的数据,
那么使用只需定义好传输类型,将处理按照python字典格式给data参数。你的数据字典在发出请求时会自动编码为表单形式:
>>> payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.post("http://www.bcbxhome.com", data=payload)
>>> print(r.text)
我们来实际演练一下,比如我们论坛帖子的收藏接口,如何才能触发收藏帖子接口呢?
1.随便选择一篇帖子,滑到最下方有一个收藏按钮:
2.点击收藏
3.输入收藏说明
4.点击确定
我们尝试用requests的post接口来实现这个场景,代码如下:
import requests
url='http://www.bcbxhome.com/bcbxxy/home.php?mod=spacecp&ac=favorite&type=thread&id=360&spaceuid=0&inajax=1'
payload={'favoritesubmit': 'true', 'referer': 'http://www.bcbxhome.com/bcbxxy/forum.php?mod=viewthread&tid=360', 'formhash': 'f13ff841', 'handlekey': 'k_favorite', 'description': '很有用,收藏一下'}
favorite_headers={'Cookie': 'PHPSESSID=ab12af2702792b5e02447a1d915c321f; VezT_2132_saltkey=QW5by6X7; VezT_2132_lastvisit=1598538478; VezT_2132_ulastactivity=9060oJ1SPIZZwoloSdG6uLlDEtB8Q3BXPVAGVClaXlODN5HmI9Qq; VezT_2132_auth=d6cc4QyTGyNTw5AgokWG9Op1oL2%2Fnm3kTVYZH7S%2Bmq0WpFKwkOZS4ewNWwodRORKpQ7o4H4AE%2Bsc0clmFacJ; VezT_2132_nofavfid=1; VezT_2132_st_t=7%7C1598542361%7C082f5de479aba6db4e7e9955774832eb; VezT_2132_forum_lastvisit=D_53_1598542361; VezT_2132_smile=1D1; VezT_2132_noticeTitle=1; VezT_2132_sid=RUDBnC; VezT_2132_lip=111.18.129.251%2C1598545541; VezT_2132_sendmail=1; VezT_2132_st_p=7%7C1598546041%7C8c9076838dbc02294304ddb653704cd0; VezT_2132_visitedfid=52D53; VezT_2132_viewid=tid_353; VezT_2132_seccode=200.eb134f9314fb2df8b7; VezT_2132_lastact=1598546268%09home.php%09spacecp; VezT_2132_checkpm=1'}
result = requests.post(url,data=payload,headers=favorite_headers)
print(result.text)
如果收藏成功会显示如下内容:
if(typeof succeedhandle_k_favorite=='function') {succeedhandle_k_favorite('http://www.bcbxhome.com/bcbxxy/forum.php?mod=viewthread&tid=360', '信息收藏成功 ', {'id':'360','favid':'19'});}hideWindow('k_favorite');showDialog('信息收藏成功 ', 'right', null, null, 0, null, null, null, null, 2, null);]]>
如果再次调用此接口会显示如下内容:
if(typeof errorhandle_k_favorite=='function') {errorhandle_k_favorite('抱歉,您已收藏,请勿重复收藏', {});}]]>
就是这么简单,快来试试吧!