netspirit 发表于 2020-8-10 20:43

python如何模拟网页提交表单并上传文件?

本帖最后由 netspirit 于 2020-8-12 00:11 编辑

我想用python实现模拟浏览器在网页填写信息并上传一个文件的功能

但是网上的教程基本都是讲爬虫 就是怎么获取信息的 像这种提交表单信息的少见

而且我这个还是带文件的 提交表单的同时要选择一个文件并上传

而且我用网页审查元素看到网页历史提交的那个php页面里面的response还无法读取...........

有谁能说下怎么用python实现模拟网页浏览器填写表单并选择几个文件提交的功能?









漁滒 发表于 2020-8-10 20:56

post方式,在files参数中加入添加文件对象,就可以上传文件

阿苏斯 发表于 2020-8-10 21:03

我只会易语言的

netspirit 发表于 2020-8-10 21:04

阿苏斯 发表于 2020-8-10 21:03
我只会易语言的

易语言容易嘛?如果容易我也可以去试试啊...............

willgoon 发表于 2020-8-10 21:28

python 易语言 vb等等 其实这些都可以 一般就是操作网页元素
比如python:

#coding=utf-8
from selenium import webdriver
#登录
driver=webdriver.Firefox()
driver.get("http://xxx.xxx.com/")
driver.find_element_by_id("username").clear()
driver.find_element_by_id("username").send_keys("这里写账号")
driver.find_element_by_id("password").clear()
driver.find_element_by_id("password").send_keys("这里写密码")
driver.find_element_by_id("submit").submit()
更好的方法 就是post 而且还要上传文件 用post更方便一些

gentledream 发表于 2020-8-10 22:41

接口,看他的提交地址,应该是这样

ying656 发表于 2020-8-10 23:16

用post就可以,如果你用模拟,你需要解决的 是元素定位问题和文件上传.并没太难 .没有源码大家不好说怎么帮你解决 只能给你方向.

Zeaf 发表于 2020-8-10 23:51

上传文件参考https://blog.csdn.net/daiyu__zz/article/details/84704443

阿苏斯 发表于 2020-8-11 16:50

netspirit 发表于 2020-8-10 21:04
易语言容易嘛?如果容易我也可以去试试啊...............

易语言 基本是傻瓜式操作,当然 我说的是用模块 很简单

thepoy 发表于 2020-8-11 21:45

本帖最后由 thepoy 于 2020-8-11 21:49 编辑

requests的post方法可以实现你的要求,具体怎么用可以参考官方文档,给你一段示例代码:
    Form_Data={}
    Form_Data['i'] = e
    Form_Data['from'] = 'AUTO'
    Form_Data['to'] = 'AUTO'
    Form_Data['smartresult'] = 'dict'
    Form_Data['client'] = client
    Form_Data['salt'] = salt
    Form_Data['sign'] = sign
    Form_Data['ts'] = ts
    Form_Data['bv'] = bv
    Form_Data['doctype'] = 'json'
    Form_Data['version'] = '2.1'
    Form_Data['keyfrom'] = 'fanyi.web'
    Form_Data['action'] = 'FY_BY_CLICKBUTTION'
    '''
    长词典用下面这个办法更好看一些,代码量也能少一些
    Form_Data = {
      'i':e,
      'from':'AUTO',
      ...
      'action':'FY_BY_CLICKBUTTION'
    }
    '''
    translate_result = requests.request(method='POST', url=url, data=Form_Data, headers=headers).text # 等同中requests.post(*args, *kwargs)


文件上传参考中文文档:https://requests.readthedocs.io/zh_CN/latest/user/quickstart.html#post-multipart-encoded
页: [1]
查看完整版本: python如何模拟网页提交表单并上传文件?