gpt4 book ai didi

python - 使用 Python 中的 POST 请求通过网站表单上传基本文件

转载 作者:行者123 更新时间:2023-12-01 05:13:24 24 4
gpt4 key购买 nike

我尝试使用 Python 和 HTTP 请求在随机网站上上传文件。为此,我使用名为 Requests 的方便库。 .

根据the documentation ,以及 StackOverflow 上的一些答案 herethere ,我只需添加一个 files在研究了网页的 DOM 之后,我的应用程序中的参数。

方法很简单:

  1. 在源代码中查找表单的 URL(“action”属性);
  2. 在源代码中查找上传的“name”属性按钮;
  3. 在源代码中查找提交表单按钮的“名称”和“值”属性;
  4. 使用所需参数完成 Python 代码。
<小时/>

有时这很有效。事实上,我成功地在此网站上上传了一个文件:http://pastebin.ca/upload.php

查看源码,该表单的URL为upload.php ,按钮名称为files ,值为Upload ,所以我得到以下代码:

url = "http://pastebin.ca/upload.php"
myFile = open("text.txt","rb")
r = requests.get(url,data={'s':'Upload'},files={'file':myFile})
print r.text.find("The uploaded file has been accepted.")
# ≠ -1

但是现在,让我们看看该网站:http://www.pictureshack.us/

对应的代码如下:

url = "http://www.pictureshack.us/index2.php"
myFile = open("text.txt","rb")
r = requests.get(url,data={'Upload':'upload picture'},files={'userfile':myFile})
print r.text.find("Unsupported File Type!")
# = -1

事实上,我发现这两个网站之间的唯一区别是,对于第一个网站,提交表单时完成工作的 URL 与表单所在的页面以及上传文件的页面相同。

但这并不能解决我的问题,因为我仍然不知道如何在第二种情况下提交我的文件。

我尝试在主页而不是 .php 上发出请求,但当然它不起作用。

<小时/>

另外,我还有一个问题。

假设某些表单元素没有“name”属性。我该如何根据我的要求使用 Python 来指定它?

例如,此网站:http://imagesup.org/

提交表单按钮如下所示:<input type="submit" value="Héberger !">

如何在我的数据参数中使用它?

最佳答案

表单还有另一个必须遵守的组件:method 属性。您正在使用 GET 请求,但您引用的表单使用 method="post"。使用 requests.post 发送 POST 请求。

关于python - 使用 Python 中的 POST 请求通过网站表单上传基本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23712469/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com