0

这一定是一个非常愚蠢的问题。我正在关注如何使用 requests 和 beautifulSoup 的小教程,在示例中,有一个:

# Build a dictionary containing our form field values
# http://docs.python.org/tutorial/datastructures.html#dictionaries
form_data = {
    'name':'Romney', # committee name field
    'type':'P',      # committee type is P for Presidential
    'frmtype':'F3P', # form type
}

esponse = requests.post('http://query.nictusa.com/cgi-bin/dcdev/forms/', data=form_data)

我的问题是,我应该如何知道键的值?

谢谢。

4

1 回答 1

1

如果您指的是form_data字典的键,则需要了解 API 的文档——这是定义 HTTP 请求的必要选项的地方。我找不到您正在查询的服务的文档,但例如这些是Facebook API 文档

例如,如果您在终端中启动一个虚拟主机,您可以准确检查您发送的内容:

$ nc -l 9999

并将您的请求发送给它:

>>> requests.post('http://localhost:9999', data=form_data)

netcat 显示它收到了以下 POST 请求:

POST / HTTP/1.1
Host: localhost:9999
Content-Length: 30
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate, compress
Accept: */*
User-Agent: python-requests/1.2.0 CPython/2.7.2 Darwin/12.4.0

frmtype=F3P&type=P&name=Romney

最后一行是由请求库编码的字典。

可以在请求 url 中编码的参数甚至更简单,可以直接从 Python 打印(注意params构造函数参数)。

>>> req = requests.Request('POST', 'http://localhost:9999', params=form_data).prepare()
>>> rint(req.url)
http://query.nictusa.com/cgi-bin/dcdev/forms/?frmtype=F3P&type=P&name=Romney
于 2013-09-13T10:13:08.803 回答