当前位置: 首页 > 知识库问答 >
问题:

如何使用请求上传文件

颜嘉福
2023-03-14

我可以使用Selenium将文件上载为

from selenium import webdriver

driver = webdriver.Chrome()
driver.get(r'https://www.example.com')
a = driver.find_element_by_xpath("//input[@type='file']")
a.send_keys(r'C:\abc.jpg')
b =  driver.find_element_by_xpath("//output[@id='result']").text

上面的代码运行良好。

现在,我想对同一作业使用请求。我试着在网上搜索并实现代码。但我无法得到结果。

import requests
from lxml import html

a = requests.get(r'https://www.example.com')
tree = html.fromstring(a.text)
b = tree.xpath("//input[@type='file']")
b.append(r'C:\abc.jpg')#Is it correct?

html代码如下所示:

<div id="test" class="abc def ghi">
    <div class="xyz def ghi">
        Drag or<br class="def ghi">Click to input file
    </div>
    <div class="pqr def ghi">
        Upload file
    </div>
    <label id="select-file" for="input" class="def ghi"></label>
    <input type="file" id="input" hidden="" class="def ghi">
</div>

代码中没有任何形式。如何解决问题?

共有1个答案

荆炳
2023-03-14

您需要使用files参数。此外,form的action属性可以指定不同的上传url,因此最好检查一下。

以下是完整的示例:

import requests
from lxml import html

host = r'https://www.example.com'
url = '/'
filename = r'C:\abc.jpg'


req = requests.get(host + url)

tree = html.fromstring(req.text)
field = tree.xpath("//input[@type='file']")
form = next(f[0].iterancestors("form"), None)
action = form.attrib['action'] if form else url

requests.post(host + action,
              files={filename: (open(filename, 'rb'), 'image/jpg')})
 类似资料:
  • 我无法访问后端服务器,我通过网络分析了API。我想用那个API上传文件。我观察到,在对该API的post请求中没有参数。我观察到网络中的请求负载。 响应头 缓存控制:无缓存连接:保持活动内容长度:135内容类型:text/html;charset=utf-8日期:2016年8月6日星期六14:32:00 GMT地点:http://myURL服务器:nginx/1.2。3.设置Cookie:_mys

  • 我正在执行使用Python请求库上传文件的简单任务。我搜索了Stack Overflow,似乎没有人遇到同样的问题,即服务器无法接收文件: 我正在用我的文件名填充upload_file关键字的值,因为如果我把它留空,它会说 现在我得到了 只有当文件为空时才会显示。所以我一直在思考如何成功地发送文件。我知道这个文件是有效的,因为如果我去这个网站手动填写表单,它会返回一个匹配对象的列表,这就是我想要的

  • 如何使用改造发送请求字符串参数。我已经提交了下面的代码。这里如何添加字符串参数并发送到服务器。 应用配置: 公共类AppConfig{ ApiConfig: 服务器响应: 在上面的示例中,代码只是在请求主体的帮助下传递了令牌和文件。 如何用上面的代码发送请求字符串param 这就是如何使用改型将下面的登录参数详细信息作为请求参数发送。当我尝试时,我得到了/Throwable:com。谷歌。格森。流

  • 问题内容: 我正在执行一个使用Python请求库上传文件的简单任务。我搜索了Stack Overflow,似乎没有人遇到相同的问题,即服务器未收到该文件: 我用文件名填充了’upload_file’关键字的值,因为如果我将其保留为空白,则表示 现在我明白了 仅当文件为空时才会出现。因此,我对如何成功发送文件感到困惑。我知道该文件有效,因为如果我访问此网站并手动填写表格,它将返回一个很好的匹配对象列

  • 问题内容: 我在Node.js中使用POST请求上传文件时遇到问题。我必须使用模块来完成该操作(无需外部npms)。服务器需要它是包含文件数据字段的多部分请求。看起来很容易,但不使用任何外部模块就很难在Node.js中完成。 我尝试使用此示例,但未成功: 问题答案: 看起来您已经在使用module了。 在这种情况下,您需要发布的只是使用其功能: 但是,如果您想从文件系统中发布一些现有文件,则可以简

  • 我有以下请求,我想在nodejs中写一个post请求: POST /rest-api/hashDb/createAndUploadHTTP/1.1 主持人:192.168.101.54 连接:保持活力 内容长度:428 产地:https://192.168.101.54 用户代理:Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KH