吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1779|回复: 9
收起左侧

[已解决] python如何模拟网页提交表单并上传文件?

[复制链接]
netspirit 发表于 2020-8-10 20:43
本帖最后由 netspirit 于 2020-8-12 00:11 编辑

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

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

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

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

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



fabu.JPG





免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
Zeaf + 1 + 1 requests的post方法,data里面填信息,至于上传文件https://blog.csdn.net/.

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

漁滒 发表于 2020-8-10 20:56
post方式,在files参数中加入添加文件对象,就可以上传文件
阿苏斯 发表于 2020-8-10 21:03
 楼主| netspirit 发表于 2020-8-10 21:04

易语言容易嘛?如果容易我也可以去试试啊...............
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

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
netspirit + 1 + 1 谢谢@Thanks!

查看全部评分

阿苏斯 发表于 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方法可以实现你的要求,具体怎么用可以参考官方文档,给你一段示例代码:
[Python] 纯文本查看 复制代码
    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热心值 +1 收起 理由
netspirit + 1 谢谢@Thanks!

查看全部评分

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-30 01:06

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表