确定要使用mechaniz操作html表中的哪一行

2024-05-04 01:05:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个使用mechanize操作webform的小脚本。这是表单的屏幕截图(底部没有提交按钮)。别担心。)

capture image

代码:

import re
import mechanize

bs = mechanize.Browser()
server = raw_input("IP to retry: ")
bs.open("http://"+server+"/avicapture.html")
assert bs.viewing_html()
bs.select_form(name="avistatus_form")
form = bs.form
bs.find_control("AVI_STATUS_ACTION").items[1].selected=True
bs.find_control("avistatuscheck0").items[0].selected=True
bs.find_control("avistatuscheck1").items[0].selected=True
bs.find_control("avistatuscheck2").items[0].selected=True
bs.find_control("avistatuscheck3").items[0].selected=True
bs.find_control("avistatuscheck4").items[0].selected=True
bs.find_control("avistatuscheck5").items[0].selected=True
print "Sending retry signal."
bs.submit()
print server+" Retried!"

事实上,它将选中所有六个复选框,并将带有下拉选项(AVI_STATUS_ACTION)的表单作为[1]提交。在

如何让它确定哪一行(与适当的avistuscheck控件(checkbox)相关)是最近的一行,并且只在选中该复选框的情况下提交表单?随着传输的文件越来越多,它们就会累积起来,我不需要全部重新发送。只是最近的一次。在

我对regex有一点了解;足以使用urllib2将html页面加载到字符串中,并从当前的“正在进行”传输中获取百分比量,但对于如何确定与正确控件(checkbox)相对应的最新传输,我有点不知所措


Tags: importformtrue表单bsserverhtmlstatus
1条回答
网友
1楼 · 发布于 2024-05-04 01:05:58

源代码包含的数据格式比实际的HTML格式要好,格式为注释形式:

</td>
<! $FREETEXT|AVI_STATUS_START_TIME0||XXXXXXXXXXXXXXXXXXXXXXXXX$ >
<td>
2014/07/11 12:00:03      
</td>
<! $FREETEXT|AVI_STATUS_END_TIME0||XXXXXXXXXXXXXXXXXXXXXXXXX$ >
<td>
2014/07/11 14:00:00      
</td>
<! $FREETEXT|AVI_STATUS_FILE_SIZE0||XXXXXXXXXXXXX$ >
<td>

可以使用正则表达式来分析:

^{pr2}$

相关问题 更多 >