gpt4 book ai didi

python - pycurl,如何为多选表单发送POST数据?

转载 作者:行者123 更新时间:2023-11-28 18:47:01 26 4
gpt4 key购买 nike

我正在尝试进行一些网络抓取,它涉及发送一个带有多选框列表的表单,看起来与此类似:

<select name="multipleSelectForm" multiple="multiple" size="5">
<option value="value1">value1</option>
<option value="value2">value2</option>
</select>

现在,我想使用 pycurl 发送 value1 和 value2,例如:

import urllib
import pycurl

c = pycurl.Curl()

data = {'multipleSelectForm':'value1',
'multipleSelectForm':'value2'}

c.setopt(c.URL, 'http://www.example.com')

c.setopt(c.POST, 1)
post = urllib.urlencode(data)
c.setopt(c.POSTFIELDS, post)

c.perform()

现在明显的问题是它多次发送 multipleSelectForm。我很确定所请求的页面可能正在寻找一个 multipleSelectForm 数组,而不仅仅是单个变量(这只是一个猜测,我实际上并不确定)因此它收到的 POST 数据不正确。

我尝试使用 Google Chrome 的开发工具来查看它正在执行的操作的流量,当我查看表单数据时,它看起来像这样:

multipleSelectForm:value1
multipleSelectForm:value2

如果有人愿意提供帮助,我对如何处理这一切有点迷茫

最佳答案

由此看起来您发送的数据将只是

{ 'multipleSelectForm':'value2' }

因为它是一本字典。如果您将其设置为元组对,它将执行您想要的操作。

data = (('multipleSelectForm', 'value1'), ('multipleSelectForm', 'value2'))

您可以通过设置一个微型调试 http 服务器来自行测试:

from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer                                                                                                                                                                                                                     

class hand(BaseHTTPRequestHandler):
def __init__(self, socket, *args):
print socket.recv(10000)

server = HTTPServer(('', 8080), hand)
server.serve_forever()

然后用你的脚本点击它。我用它来确认传递元组列表符合我的预期。

关于python - pycurl,如何为多选表单发送POST数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18514699/

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