eros1513 2009-07-15 14:21
浏览 405
已采纳

Python的urllib,urllib2

从网上查到Python的urllib,urllib2可以模拟web的客户端操作。
下面是我想操作的一个页面部分代码(完整的看附件),请问怎样用 Python模拟点下按钮的操作。

谢谢,请赐教!(如果可能的话,请说的详细一点,本人比较菜)

index.jsp


...
...
...

...
...
...

URL jmxURLPrefix = new URL(jmxBase, "invoke?operation=build&objectname=CruiseControl+Project%3Aname%3D");

...
...
...

<br> function callServer(url, projectName) {<br> document.getElementById(&#39;serverData&#39;).innerHTML = &#39;<iframe src="' + url + '" width="0" height="0" frameborder="0"></iframe>&#39;;<br> alert(&#39;Scheduling build for &#39; + projectName);<br> }</p> <pre><code>function checkIframe(stylesheetURL) { if (top != self) {//We are being framed! //For Internet Explorer if (document.createStyleSheet) { document.createStyleSheet(stylesheetURL); } else { //Non-ie browsers var styles = &quot;@import url(&#39;&quot; + stylesheetURL + &quot;&#39;);&quot;; var newSS = document.createElement(&#39;link&#39;); newSS.rel = &#39;stylesheet&#39;; newSS.href = &#39;data:text/css,&#39; + escape(styles); document.getElementsByTagName(&quot;head&quot;)[0].appendChild(newSS); } } } </code></pre> <p>
...
...
...

" type="button" onclick="callServer('<%= jmxURLPrefix.toExternalForm() + info[i].project %>', '<%=info[i].project%>')" value="Build"/>
...
...
...

[b]问题补充:[/b]
首先感谢RyanPoy回答。
我在网上察看的urllib和urllib2的时候,
所给出的例子都是提交表单的,而我这个jsp中则是个iframe(?),所以就有些不明白了。
这里是像服务器提交一个网址吗?
比如我这个jsp的实际URL为http://192.168.15.72:8080/,
我用urllib.urlopen('http://192.168.15.72:8080/').readlines()
打开URL,然后呢?怎样处理那个iframe呢?

[b]问题补充:[/b]
我当然知道urllib的基本应用,
我最想知道的是怎样模拟点下按钮的操作。
我想既然点下了按钮,那时不是向服务器发送了什莫请求。
然后服务器处理请求,实现我点下按钮的效果。

看这个jsp,点下按钮他会调用callServer函数,
而callServer函数有效的命令只有:
document.getElementById('serverData').innerHTML = '';
他好像是让隐藏的div(

)中显示一个框架(iframe)

我想知道怎样用程序实现向服务器发送这个请求?
[b]问题补充:[/b]
不用urllib也行,只要能实现,用什莫都行!
[b]问题补充:[/b]
我再想办法把。

本来我是想通过python直接操作http的。。。

还有一个不太好的方法,就是通过操作IE或firefox等浏览器来达到点击按钮的目的,如果有空的话可以看看Selenium IDE或Selenium RC,这是个自动测试工具。可以录制操作浏览器的动作,然后回放。

总之,谢谢你的回答。

  • 写回答

3条回答 默认 最新

  • RyanPoy 2009-07-17 09:51
    关注

    [quote]问题补充:
    我最想知道的是怎样模拟点下按钮的操作。
    我想既然点下了按钮,那时不是向服务器发送了什莫请求。
    然后服务器处理请求,实现我点下按钮的效果。

    我想知道怎样用程序实现向服务器发送这个请求?
    问题补充:
    不用urllib也行,只要能实现,用什莫都行! [/quote]

    你的请求我不知道有没有什么方法可以做到。

    但是urllib绝对做不到。他能做到的是你知道你要请求的内容。而不是模拟一个点击或者其他的事件,从而代替人来浏览网页。

    如果你能找到好的工具(虽然我认为可能性很低),希望你能分享一下。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型