【发布时间】:2015-03-13 07:58:15
【问题描述】:
我正在编写一个网络爬虫/自动化工具。该工具需要使用 POST 请求来提交表单数据。最终操作使用此链接:
<a id="linkSaveDestination" href='javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("linkSaveDestination", "", true, "", "", false, true))'>Save URL on All Search Engines</a>
从这个表单提交数据:
<input name="sem_ad_group__destination_url" type="text" maxlength="1024" id="sem_ad_group__destination_url" class="TextValueStyle" style="width:800px;">
我一直在使用 requests 和 BeautifulSoup。我知道这些库不能与 Javascript 交互,人们推荐 Selenium。但据我了解,Selenium 不能做 POST。我该如何处理?是否可以不打开像 Selenium 那样的实际浏览器?
【问题讨论】:
-
Selenium 可以正常发布。重要的是您在运行时中执行,该运行时可以通过单击链接来执行链接上的 javascript,就像 selenium 提供的 webdriver 一样
-
当然,您可以只提取表单输入字段的名称并插入您想要的任何值,然后使用请求自己发送帖子。如果这只是您的应用程序的一小部分,您不打算在其他地方做,这可能是更好的选择。
-
所以,当我点击上面的链接时,它会发布表单中的内容并刷新页面。我可以简单地向同一个 URL 发出 post 请求而不是使用链接吗?此外,当为该字段保存数据时,表单具有 value 属性,但上面的 input 元素显示它没有输入任何数据,因此没有 value 属性。我可以使用请求在我的帖子有效负载中添加 'value: "blah"' 吗?
-
是的。我添加了一些详细信息和文档链接的答案。
标签: javascript python selenium beautifulsoup python-requests