如何找出HTML HTML按钮提交的网址

时间:2019-07-20 01:28:43

标签: html forms selenium python-requests

因此,我正在抓取一个网站(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。我怎么知道要发布的网址?

1 个答案:

答案 0 :(得分:0)

我正在发布此答案,以防有人尝试做类似的事情。通过在开发者控制台的“网络”标签中查看并单击按钮,我找到了按钮发布到的URL及其参数。然后我遇到一个问题,它每次发送PUT请求的URL都要更改,总是以不同的cache_key结尾。

解决方案是使用名为seleniumwire的python模块来模拟浏览器,然后获取所有网络流量。从那里,我遍历了它,找到了包含cache_key=的url,然后将所有内容都存储为字符串。然后将该字符串添加到以下网址的末尾:https://www.instacart.com/v3/bundle?source=web&cache_key=,然后返回使用请求。

希望这对某人有帮助!