使用Python“requests”登录并上载文件

2024-04-18 23:16:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要登录并上传一个文件。我面临的问题是,登录页面不同于上传页面。如果必须手动执行,我将登录(login.php)到站点,然后导航到上载页面(uploader.php)来上载文件。我写的是:

import requests

url1='http://www.abc.com/login.php'
r = requests.post(url1, auth=('uname', 'pword'))
print r.status_code //msg:'200'

payload = {'upload':open('./tmp.txt')}
url2='http://www.abc.com/uploader.php'
r = requests.post(url2, data=payload)
print r.text //msg: "you must first login to upload the file"

我的代码显然没有按预期工作。登录部分工作正常,但未上载部分。 请问我怎样才能完成我的目标。在

更新:

为了更深入地了解我的问题,我提供了login.php和{}文件的详细信息:

登录名.php

^{pr2}$

上传器.php

<form action='uploader.php' method='POST' id='form' class='upload' enctype="multipart/form-data" >
<input type='file' name='upload' id='file'></input>
<input type='button' value='Analyze' name='button' onclick='javascript: checkuploadform(false)'>

Tags: 文件formcomhttpinputwwwlogin页面
1条回答
网友
1楼 · 发布于 2024-04-18 23:16:29

创建一个会话,然后使用该会话处理您的请求-

sessionObj = requests.session()
sessionOj.get(...) # Do whatever ...

会话将保存Cookie以备将来请求。
并将post参数用于username,password作为登录login.php所需的参数,而不是auth username password。
还可以使用files参数上载文件。 所以最后的代码是-

^{pr2}$

Docs.

相关问题 更多 >