Python使用Mechanize自动填写表单
有人能帮我或者分享一些代码,让我用 mechanize 自动填写登录信息吗?我想写一个 Python 脚本,运行时能自动登录我喜欢的网站。
谢谢!
2 个回答
1
你喜欢的网站可能都有不同的表单,比如表单的编号、用户名和密码的字段名称。而且希望你在每个网站上使用不同的用户名和密码(如果在多个网站上用同样的用户名和密码,那一旦其中一个网站被黑客攻击,你的身份就会在“所有地方”都受到威胁,这可真是个麻烦!)。
所以,你可以选择把这些信息直接写死在代码里,就像@systempuntoout的回答那样,或者写一个小的配置文本文件(比如用ConfigParser支持的格式),把每个网站的信息都放在里面。这样,当你的脚本启动时,就可以加载这些配置,并写一个“log_me_in”函数,只需要写一次,这个函数接受网站名称作为参数,然后查找并使用与之相关的参数。
如果你有很多“喜欢的网站”,以至于加载它们的信息明显拖慢了启动速度,那么你可能还想考虑更聪明地保存这些信息(比如放在sqlite
表中),这样就可以快速查找某一个或几个网站的信息,用它们的名称作为“关键字”。
3
这段代码可以帮助你登录一个网站,并下载一个页面,比如说:
import mechanize
br=mechanize.Browser()
br.open('http://www.yourfavoritesite.com')
br.select_form(nr=0) #check yoursite forms to match the correct number
br['Username']='Username' #use the proper input type=text name
br['Password']='Password' #use the proper input type=password name
br.submit()
br.retrieve('https://www.yourfavoritesite.com/pagetoretrieve.html','yourfavoritepage.html')
这个脚本假设你的登录表单是页面上的第一个表单,而且输入框的名字分别是 Username
(用户名)和 Password
(密码)。
你也可以通过名字来选择你的表单,方法是:
br.select_form(name="thisthing")
请根据你喜欢的网站的登录页面来调整这个脚本。
正如AlexMartelli所提到的,这个脚本应该进行一些通用化,以便能够处理不同的网站,并添加一些配置参数。