Mechanize对WEB的操作

本文介绍如何利用Ruby库Mechanize实现网页自动化交互,包括设置代理、填充表单、点击按钮等操作。适用于网站自动化测试、爬虫开发等场景。

http://my.oschina.net/u/588964/blog/104806


通过Mechanize模拟自然的浏览器行为来完成与网页之间的交互.  



# Mechanize的安装  
Mechanize的安装请查看 ->  Ruby library的安装  

# 使用Mechanize时,需要在脚本头部注明  
require 'mechanize'  

# Mechanize object的设定  
agent = WWW::Mechanize.new  

# 对虚拟的user_agent的设定  
agent.user_agent_alias = 'Windows IE 7'  

# 历史纪录的大小设  
agent.max_history = 1  

# 激活网址  
agent.get('http://www.test.com')  

# 网页连接超时设定  
agent.open_timeout = 10  

# 设定连接网页时的认证(要在激活网页前使用)  

agent.auth('username', 'password')  

# 读取网页的title标签  
page = agent.get('http://www.test.com')  
page.title  

# 取得当前网页的网址  
page = agent.get('http://www.test.com')  
page.uri  

# 读取网页的form标签  
page.forms.name('Name')  

# 使用form的action  
page.forms.action('test.php')  

# 如果网页中有多个form时  
page.forms[0]  

# 如果网页中有多个同名称或相同action的form时  
page.forms.name('Name').first  

# 使用传递方法进行判断  
page.forms.action('./test.php').find{|f| f.method == 'POST'}  

# 文本框,密码框,文本域的填写  
form = page.forms.name('Name').first  
form['文本框或文本域name'] = '填写内容'  
form.fields.name('文本框或文本域name').value = '填写内容'  

# submit标签  
form = page.form[0]  
form.submit  
form.submit(form.buttons.name('Name'))  

# CheckBox标签  
form = page.forms.name('chkbox')  
返回的值为 c1 = form.checkboxes[0].name  
返回的值为 val2 = form.checkboxes[1].value  
返回的值为 false = form.checkboxes.name("c1″).checked  

# 复选框的选择  
form.checkboxes.name('c1').check  
# 对应的HTML代码为:  
<form name="chkbox">  
  <input type="checkbox" name="c1″ value="val1″>复选框1  
  <br>  
  <input type="checkbox" name="c2″ value="val2″ checked>复选框2  
</form>  

# 单选框的选择  
form.radiobuttons.name('box')[1].check  

# 获得当前SelectList选择的选项及SelectList的设定  
form = page.forms.name(form1).first  
返回的值为  選択3 = form.fields.name('select1').value  
返回的值为 選択3 = form.fields.name('select1').options[2].select  

# 选项的选择  
form.name('select1').value = “1″  
对应的HTML代码为:  
<form name='form1' action="" method="post">  
   <select name='select1'>  
    <option value="1″>選択1</option>  
    <option value="2″>選択2</option>  
    <option value="3″ selected>選択3</option>  
  </select>  
</form>  

# SelectList多选择时为  
form.fields.name('select1') = ['one', 'three']  

# 对应的HTML代码为:  
<form>  
   <select name="select1″ size="3″ multiple>  
      <option value="one" selected>選択1</option>  
      <option value="two">選択2</option>  
      <option value="three" selected>選択3</option>  
   </select>  
</form>  

# 文件的上传  
# 方法一  
page.forms[0].file_uploads.name('upfile').file_name = './hoge.jpg'  
# 方法二  
page.forms[0].file_uploads.name('upfile').file_data = File.open('./hoge.jpg','rb'){|f| f.read}  

# 对应的HTML代码为:  
<form>  
   <input type="file" name="upfile" enctype="multipart/form-data">  
</form>  

# 网页中的超链接  
# 网页中的全部超链接的输出  
page = agent.get('http://www.test.com')  
page.links.each{|link| puts link.href}  

# 网页中超链接的击活(可使用正则表达式)  
page.links.href('http://www.test.com')[2].click  
page.links.text('文本')[0].click  

# frame网页的查看  
# 方法一:使用name查看  
page.frames.name('left').click  
# 方法二:使用链接查看  
leftpage = page.frames.src('frame_left.htm').click  
# 对应的HTML代码为:  
<frameset cols="150,*">  
  <frame src="frame_left.htm" name="left">  
  <frame src="frame_right.htm" name="right">  
</frameset>  

# 网页中的文件下载(正则表达式可用)  
agent = WWW::Mechanize.new  
data = agent.get_file('http://www.test.com/top.gif')  
open('top.gif', 'wb'){|f| f.write(data)}  
# 对应的HTML代码为:  
<img src="http://www.test.com/top.gif">  

# table部分的的文字  

page.root.search('table/tr/td'){|e| puts e} 


?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
require 'rubygems'
require 'mechanize'
 
agent = WWW ::Mechanize. new
agent.max_history = 1
agent.user_agent_alias = 'Windows IE 7'
 
page = agent.get( "http://www.iteye.com/login" )
form = page.forms[ 0 ]
form.fields[ 0 ].value = "javaeye帐号"
form.fields[ 1 ].value = "javaeye密码"
     
agent.submit form #登录JavaEye
 
page = agent.get( "http://qichunren.iteye.com/admin/messages/new" ) # 这里的域名改成你个人的
form =  page.forms[ 0 ]
form.fields[ 0 ].value = "qichunren" # 消息接收者
form.fields[ 1 ].value = "测试消息" #标题
form.fields[ 4 ].value = % Q {
我代表火星全人类欢迎你加入火星圈子!
地址是http://mars.group.iteye.com/ 点击申请加入.
火星口号:火星新闻,火星笑话,火星文, 只要你的想法够火星 地球很危险 JE 很严肃 大家还是回火星去吧
}
 
5 .times{agent.submit form} # 把这个数字写成 1000 也是可以的,*_*


基于径向基函数神经网络RBFNN的自适应滑模控制学习(Matlab代码实现)内容概要:本文介绍了基于径向基函数神经网络(RBFNN)的自适应滑模控制方法,并提供了相应的Matlab代码实现。该方法结合了RBF神经网络的非线性逼近能力和滑模控制的强鲁棒性,用于解决复杂系统的控制问题,尤其适用于存在不确定性和外部干扰的动态系统。文中详细阐述了控制算法的设计思路、RBFNN的结构与权重更新机制、滑模面的构建以及自适应律的推导过程,并通过Matlab仿真验证了所提方法的有效性和稳定性。此外,文档还列举了大量相关的科研方向和技术应用,涵盖智能优化算法、机器学习、电力系统、路径规划等多个领域,展示了该技术的广泛应用前景。; 适合人群:具备一定自动控制理论基础和Matlab编程能力的研究生、科研人员及工程技术人员,特别是从事智能控制、非线性系统控制及相关领域的研究人员; 使用场景及目标:①学习和掌握RBF神经网络与滑模控制相结合的自适应控制策略设计方法;②应用于电机控制、机器人轨迹跟踪、电力电子系统等存在模型不确定性或外界扰动的实际控制系统中,提升控制精度与鲁棒性; 阅读建议:建议读者结合提供的Matlab代码进行仿真实践,深入理解算法实现细节,同时可参考文中提及的相关技术方向拓展研究思路,注重理论分析与仿真验证相结合。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值