2 hello lindo Hello_Lindo 于 2017.08.28 01:31 提问

python3的request怎么post同名的多个不同数值的数据

谢谢各位大牛进来解答,小新人非常感谢!
我想用request的提交方式post数据,但是我要post的数据是有同名多个数值的,请问应该怎么写代码呢?
我用Firefox的firebug插件查到post的数据是{“time”:"XXXXXX","time":"XXXXXX"},因为网页里原本是个申请表单,申请的时间段是个多选框,因此会有多个需要使用同名提交的不同数据。
我在网上找了好多都没有找到解决办法,只好来请教各位大神了。
下面是我写的代码,表单要提交的别的数据和网址我就去掉了,因为要登录什么的。。。
再次感谢!!!!

 # -*- encoding="utf-8" -*-
#!/etc/bin/env python3
import sys,msvcrt
from http import cookiejar
from urllib import request,error,parse
import re
time = ["8点-8点30分","8点30分-9点","9点-9点30分","9点30分-10点",\
        "10点-10点30分","10点30分-11点","11点-11点30分","11点30分-12点",\
        "12点-12点30分","12点30分-13点","13点-13点30分","13点30分-14点",\
        "14点-14点30分","14点30分-15点","15点-15点30分","15点30分-16点",\
        "16点-16点30分","16点30分-17点","17点-17点30分","17点30分-18点",\
        "18点-18点30分","18点30分-19点","19点-19点30分","19点30分-20点",\
        "20点-20点30分","20点30分-21点","21点-21点30分","21点30分-22点",\
        "22点-22点30分","22点30分-23点"]
for i in range(len(time)):
    if i%3==0:
        print ('')
    print ("【" +str(i+1)+ "】" + time[i]+"      ", end = '')
n = input("请问需要输入几个时间点?(1-30) ")
n = int(n)
time_list = []
i = 0
while i<n:
    j = input("请输入第"+str(i+1)+"个时间点: ")
    j = int(j)
    j = j-1
    time_list.append(time[j])
    i = i+1
url=""
cookies= cookiejar.MozillaCookieJar()
handler = request.HTTPCookieProcessor(cookies)
headers={"User-Agent":"Mozilla/5.0"}
opener = request.build_opener(handler)
opener.open(url)
for item in cookies:
    if "csrftoken" == item.name:
        csrftoken= item.value
req=request.Request(url,data,headers)
res=opener.open(req)

2个回答

lianxiaopang
lianxiaopang   2017.08.28 08:40

你可以用抓包工具,用浏览器登陆一次,看看数据是怎么post提交的,然后代码也用一样的方式格式提交应该就可以了

lianxiaopang
lianxiaopang 回复Hello_Lindo: 实话实说我也没碰到过这样的问题,我仔细看了你的代码,没发现你把数据放到data里的相关代码啊,是不是你少写了
11 个月之前 回复
Hello_Lindo
Hello_Lindo 哎呀,我想把格式调整一下结果发现回车就是直接回复了。。。。还不能删除。谢谢您解答,我查到post的格式是这样的,然后代码里应该用什么方式去保存两个同名的数据呢?字典又不可以重复。。
11 个月之前 回复
Hello_Lindo
Hello_Lindo Content-Disposition: form-data; name="time" 8点-8点30分 -----------------------------178633047218631 Content-Disposition: form-data; name="time" 8点30分-9点 -----------------------------178633047218631
11 个月之前 回复
a415547421
a415547421   2017.08.28 11:02

你仿造那个post的格式就好了

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
post多个相同name的元素值获取
突然忘了怎么获取一个表单中多个相同name元素的值了,记得是Form,但是不知道是哪个方法了,记录下 Request.Form.GetValues("name")
python: 如何往http request里添加多个同名的参数
有些web app需要request param的order必须不能乱,而且有些web app必须包含多个同名的param才行(例如aims的leave application submit form) 往http request添加参数的一般做法是: urllib.urlencode({'p_username' : username, 'p_password' : password}
java中request接收数组(即request接收多个同名参数)
例如:复选框  勾选多个内容的时候 提交: 姓名: 兴趣: 游泳 唱歌 跳舞 接收时如是写: <% request.setCharacterEncoding("GBK") ; // 按中文接收 Enumeration enu = request.getParameterNames() ; // 接收参数的名称 %> <% while(enu
GoodZhang在学Python(十三)--Python3数据get与post提交
urllib.request 模块定义了一些类及方法,用户帮助我们访问URL
python使用requests POST提交一个键多个值
问题在使用POST提交数据时,想实现下面这种情况:requests.post(url, data={'interests':'football','interests':'basketball'})用这种方式肯定是错误的,因为字典中的key是唯一的。解决方法使用元组列表 代码如下:import requests url = 'http://httpbin.org/post' r = request
PHP 传递同名参数处理方法
传递多个同名数据时使用:(come[] 接收后为array)http://localhost/shop/shop.php?come[]=1&come[]=2 显示GET方式传递数据:<?phpprint_r($_GET["come"])?>  读取array中的数据:<?php$come = $_GET["come"];for ($i=0;$i<c
GET和POST混合提交同名参数的测试
众所周知,浏览器可以通过GET和POST两种方式发送信息到服务器。但实际上用的最多的应该是GET和POST的混合方式。 比如 提交这样一个表单 <form action="people.do?action=edit" method="post">   <input type="text" name="peoName"/> </form>      在服务器单我们可以通过request.
同名的cookie会不会存在多个
cookie new了多个。同一个名字。会不会存在多个呢。//若果不设置Cookie的path,则名字相同的Cookie视为相同的Cookie,后面的覆盖前面的,注意:大小写敏感 Cookie c1=new Cookie(&quot;name&quot;, &quot;v1&quot;); Cookie c2=new Cookie(&quot;name&quot;, &quot;v2&quot;); //若设置了不同的path,即使Cookie名字相同,也视为不...
[bigdata-002]python3 +flask 以post方式获取json的api
1. server.py #!/usr/bin/env python3 #-*- coding:utf-8 -*- import os import json import pickle from flask import Flask, request, render_template, jsonify, make_response, url_for from impala.dbap
bottle框架学习(三)获取GET,POST请求的参数
GET参数提供方法 在url连接最后添加”?名称=值&amp;amp;名称=值……” 在浏览器url地址栏手工输入 也可以通过超链接提供 在网页中通过表单的形式提供 获取GET参数 request.query.name 参数名name不存在时,则返回空字符串 from bottle import route,run,request htmlstr = &quot;&quot;&quot; &amp;lt;!DOCT...