这是一个我很好奇的特定于站点的问题——因为我仍在学习网络请求的大部分动态。
我知道如何使用 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/