使用Python和Mechanize随机化形式的文件

时间:2013-06-29 23:48:03

标签: python forms python-2.7 mechanize mechanize-python

我正在尝试使用mechanize来自动登录网站并查看一些数据。我很确定我已经通过了常用用户名密码表单的第一页,但第二个登录页面会询问您在创建帐户时选择的安全问题的答案中的特定字符。

如果您喜欢的宠物被称为加菲尔德并且它要求第2,第4和第5个角色,您将需要用a,f,i填写3个输入并发布该表格。

我不确定每次登录时机械化搜索它想要的字符的最佳方法是什么。表单源代码的开头包含此内容。

<label for="frmentermemorableinformation1:strEnterMemorableInformation_memInfo1">Character 5 &#160;</label>

在表格上填写其他2个字符的另外2个标签,我认为让机械化阅读源代码搜索“字符”的前3个字符然后是个好主意每次出现后立即读取字符作为文本出现的前3次是为那些标签。

我将如何做到这一点并且有一种更简单的方法来完成此操作而不是阅读整个源代码,可以机械化地专门搜索该表单中的标签或其他快捷方式吗?此外,我对编程不是很有经验,所以任何额外的细节或解释都会很棒。谢谢。

1 个答案:

答案 0 :(得分:0)

  

我将如何做到这一点,是否有更简单的方法来做到这一点   而不是阅读整个源代码,可以机械化   专门搜索该表格或其他标签   快捷键?

我对python中的机械化并不熟悉,但是例如在ruby中使用机械化,你使用html解析器来搜索html。 python的html解析器是BeautifulSoup或libxml。 BeautifulSoup更容易安装 - libxml有很多依赖项,可以安装熊。这是一个BeautifulSoup示例:

from BeautifulSoup import BeautifulSoup as bs
import re

soup = bs(open('html.html'))

form = soup.find(id="form1")

labels = form.findAll('label', text=re.compile("Character \d+") )
labels = labels[:3]

for label in labels:
    print(label.string)

--output:--
Character 5 &#160;
Character 6 &#160;
Character 7 &#160;