python - 请求模块中的数据有效负载?

标签 python http web-scraping python-requests

这是一个我很好奇的特定于站点的问题——因为我仍在学习网络请求的大部分动态。

我知道如何使用 Pyhton 的请求库将数据负载添加到 http 请求:

payload = {
    "data": "whatever_data_string_here"
}

r = requests.get('url', data=payload)

关于何时以及如何应用这种方法,我在很大程度上仍然知之甚少。我曾尝试使用不同的站点类型,试图找到独特的方法来理解请求数据的不同方法,但在以下站点上遇到了困难:

aaimedicine(dot)com/fap/

忽略他们在缩写方面的糟糕选择,我试图弄清楚如何以他们的形式遍历对不同专业类型的请求。

该站点的一般功能是您可以从Specialty 下拉列表中选择一个选项,单击Search,然后显示相关结果。

尽我所能,似乎是通过使用请求 header 提交的数据检索数据,如下所示:

specialty=Massage_Bodywork&specother=&state=ALL&Submit=Search+%C2%BB

我通过检查控制台 View 中的请求 header 发现了这一点,但不知道如何将其应用于我的 http 请求。

我试过以下方法:

for option in options:
    r = requests.get('http://www.aaimedicine(dot)com/fap/', data={"Form Data": "specialty={}&specother=&state=ALL&Submit=Search+%C2%BB".format(option)})

这不会响应我正在寻找的数据,而只是在提交选择之前给出原始 url 的 html。

我想知道如何发出这些类型的请求,以便可以迭代选项。

最佳答案

我已经意识到在这种情况下可以通过采用以下 header 源来发出这种类型的 POST 请求:

specialty=Speciality_Choice_Value&specother=&state=ALL&Submit=Search+%C2%BB

并通过请求模块利用它:

payload = {
        "specialty": "Speciality_Choice_Value",
        "specother": "",
        "state": "ALL",
        "Submit": "Search+%C2%BB",
    }

r = request.post('theurl.com', data=payload)

关于python - 请求模块中的数据有效负载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41171931/

相关文章:

ruby-on-rails - Rails 重定向呈现 HTML,但浏览器不显示它

http - 为什么无法从 HTTP Piwik 站点跟踪 HTTPS 站点?

http - 在 Go 中构建 URL,包括服务器方案

python - 防止在 Python 驱动的 PhantomJS/Selenium 中下载 CSS/其他资源

python - Beautifulsoup4 性能树莓派3

python - 如何在 Matplotlib(python)中隐藏轴和网格线

python - 在python中查找十进制数的小数部分的位数

python - 导入 OpenCV python 模块时出错(使用 Qt 和 QtOpenGL 构建时)

Python 在给定 XML 字符串的情况下漂亮地打印 XML

ruby - 如何使用 Ruby 和 Mechanize 获取验证码 img src?