请求模块中的数据有效载荷?

2024-09-28 21:33:40 发布

您现在位置:Python中文网/ 问答频道 /正文

这是一个特定于站点的问题,我很好奇,因为我仍然在学习web请求的动态性。在

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

payload = {
    "data": "whatever_data_string_here"
}

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

关于何时以及如何应用这种方法,我基本上还是没有什么线索。我在玩不同类型的网站,试图找到独特的方法来理解不同的数据请求方法,但在以下网站上遇到了难题:

^{pr2}$

忽略了他们糟糕的缩写选择,我试图找出如何迭代不同专业类型的请求。在

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

尽我所能,似乎是通过与请求头一起提交的数据检索数据,如下所示:

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

通过检查控制台视图中的请求头,我发现了这一点,但不知道如何将其应用于我的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。在

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


Tags: 数据方法httpurl类型searchdataget
2条回答

我已经意识到这种类型的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)

如果您查看/fap页面的html源代码,您将看到

<form method="post" action="">

所以我猜你可能只需要请求.post()而不是.get()。在

但是正如ettanany在上面的评论中提到的,这真的不是一个好主意,因为它不是一个webapi(它随时可能更改,并破坏您的脚本)。在

相关问题 更多 >