【问题标题】:Python - clicking a javascript buttonPython - 单击一个 javascript 按钮
【发布时间】:2012-02-13 21:14:18
【问题描述】:

我在页面上有一个按钮,我需要单击该按钮才能按顺序移动到下一页,我想知道这在 Python 中是如何实现的。该按钮似乎是 HTTP POST 请求和 Javascript 的混合,这里是按钮的代码:

<FORM name="ff" action="nq2.phtml" method="post">
  <INPUT type="hidden" name="target" value="-1">
  <INPUT type="hidden" name="fact" value="">
  <INPUT type="hidden" name="parm" value="">
  <INPUT type="hidden" name="use_id" value="-1">
  <INPUT type="hidden" name="nxactor" value="1">
  <TD align="center" valign="top">
  <DIV class="pr">
  <A href="javascript:;" onClick="settarget(5); setch(ch5); return false;">

老实说,我不知道如何处理这样的事情,并且想知道是否有人对我将如何做这件事有所了解。

【问题讨论】:

  • settarget() 函数有什么作用?无论如何,你不能用 Python 来做,但你必须用 javascript 来做(如果你需要延迟,可以使用 setTimeout())。
  • @FabioBuda 显然你可以! ;)
  • 您是如何获得此按钮的代码的? Wireshark?

标签: javascript python html post


【解决方案1】:

要模拟表单的提交,您可以发送与单击提交按钮后浏览器将发送到站点相同的 POST 请求。一种方法是使用urllib.urlencode 对字典中的表单数据进行编码,并使用urllib2.urlopen 发送请求:

import urllib, urllib2
form_data = urllib.urlencode({'target': <value>, 'fact': <value>, ...})
urllib2.urlopen("np2.phtml", form_data)

【讨论】:

  • 嘿,我正在处理类似的问题。问题是当我单击按钮时,它会生成一个发送到网站的哈希(因此无法事先知道 POST 请求)。遇到这种情况应该怎么办?
  • @Fozoro 您可能正在处理单页应用程序。在这种情况下,我会尝试使用 seleniumcypress 之类的内容重现您感兴趣的场景。
  • 太好了,非常感谢您的回复,我以前从未听说过cypress(将研究一下)。尽管如此,您是否知道使用 requests 模块(没有硒)是否可以做到这一点。非常感谢您提前回答。
  • @Fozoro 恐怕有时你需要执行 javascript 代码来获得你需要的东西,看起来你就是这种情况。
猜你喜欢
  • 2023-04-07
  • 2019-03-17
  • 2011-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多