我想建立一个自己的在线应用程序来管理库存,然后将其提交给本地分类站点。该本地分类站点没有API,只有一些具有多个步骤的老式HTML表单。
在不使用Selenium / webdriver或通过firefox / chrome扩展虚拟客户端的情况下,在网页上远程提交表单的方法是什么?由于提交过程是多个步骤,因此它必须支持某种会话。
我已经使用webdriver和python完成了此操作,这似乎是在线上类似问题的最受欢迎答案。
通常,您应该能够使用任何HTTP客户端/库来执行此任务(因为在幕后,所有事情归结为仅对某些服务器进行正确的HTTP调用)。
这将有多难,在很大程度上取决于您与之交互的应用程序的设计方式(严重)。
在简单方案中,您需要:
这里的示例使用Python requests
,这几乎是当今最好的选择。
让我们开始吧。
首先,您需要检查您的登录页面表单。通常,查看HTML页面会为您提供有关如何构建请求的足够信息。
一个示例可能是:
<form action="/login" method="POST">
<input type="text" name="username">
<input type="password" name="password">
...
</form>
为了跟踪cookie,我们将使用一个Session
对象:
import requests
session = requests.Session()
接下来,我们将通过POST提交凭据(假设您的应用程序位于http://example.com
):
response = session.post(
'http://example.com/login',
data={'username': 'your_user', 'password': 'your_password'})
此时,您可以检查response.ok
以确保一切正常。如果您进行检查session.cookies
,则应该看到已设置会话cookie。
从现在开始,将使用该会话对您的应用程序发出的所有请求进行身份验证,因此等同于您从浏览器运行的请求。
要提交表单数据,只需开始检查应用程序的工作方式(通过检查表单来获取提交URI和表单字段名,就像我们对登录页面所做的那样,并使用同一会话通过POST提交数据)。
如果页面HTML很复杂,则使用浏览器开发人员工具查看HTTP请求并通过代码复制它们也可能会有所帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句