因此,我正在抓取一个网站(instacart.com),它需要一个邮政编码来确定其显示的数据。我想使用Python请求发布任意邮政编码。唯一的问题是我不知道将其发布到哪个url,以及它是否需要其他任何参数,例如真实性令牌或用户缓存键。通过如下所示的文本框输入邮政编码:
<form data-radium="true">
<input id="postalcode-16749"
name="postal_code"
type="text"
aria-invalid="false"
aria-describedby=""
autocomplete="on"
placeholder=""
data-radium="true"
value="" style=(super long block of css stuff)>
</form>
,然后通过如下所示的按钮发布:
<button type="submit"
data-radium="true"
style="touch-action: manipulation; (long block of more css)">
Continue
</button>
我对网络编程了解不多,但是在学校里我得知HTML表单看起来更像这样:<form action="/action_page.php" method="get">
,您可以使用action
属性来查找它的位置发布到。有没有一种方法可以使用开发人员控制台找到我要寻找的东西?如何使用Python将邮政编码发布到该网站?
编辑:我做了一些进一步的挖掘,发现请求有效负载为{“ current_zip_code”:“ some_zip_code”},实际上它不是在使用POST,而是在使用PUT。但是仍然存在问题,请求URL看起来像这样:https://www.instacart.com/v3/bundle?source=web&cache_key=
,然后每次都有一个不同的代码用于cache_key。我怎么知道要发布的网址?
答案 0 :(得分:0)
我正在发布此答案,以防有人尝试做类似的事情。通过在开发者控制台的“网络”标签中查看并单击按钮,我找到了按钮发布到的URL及其参数。然后我遇到一个问题,它每次发送PUT请求的URL都要更改,总是以不同的cache_key
结尾。
解决方案是使用名为seleniumwire
的python模块来模拟浏览器,然后获取所有网络流量。从那里,我遍历了它,找到了包含cache_key=
的url,然后将所有内容都存储为字符串。然后将该字符串添加到以下网址的末尾:https://www.instacart.com/v3/bundle?source=web&cache_key=
,然后返回使用请求。
希望这对某人有帮助!