与网页交互(Interacting With a Web Page)
通过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}
ruby
分享到:
相关推荐
如果你希望深入了解Mechanize的内部实现或对其进行定制,可以研究这些源代码。通过阅读和学习源代码,你可以发现更多关于如何构建这样的自动化库的技巧和最佳实践。 总之,Ruby-Mechanize是一个强大而灵活的工具,...
此外,结合实际项目实践,可以提升对Mechanize的运用技巧,比如抓取动态加载的内容、处理JavaScript等更复杂的场景。 总之,Mechanize是Python Web爬虫和自动化测试领域中不可或缺的工具之一,其强大的功能和易用性...
以下是对 Ruby Mechanize 安装过程及其相关知识点的详细解释。 1. **Ruby Gem 管理系统**: Ruby 的包管理系统是 Gem,它允许开发者方便地发布、安装和管理 Ruby 库。Mechanize 是通过 Gem 来分发和安装的,因此...
通过使用mechanize,开发者可以编写程序自动执行一系列Web交互,比如登录网站、搜索信息、甚至执行复杂的用户操作流程。这在数据爬取、自动化测试和模拟用户行为的场景中尤为有用。 在源代码中,我们可以看到...
在Python编程中,有时我们需要模拟浏览器行为来自动化执行网页交互任务,例如爬虫或测试。mechanize模块是一个强大的工具,它提供了模拟浏览器...通过理解并熟练使用mechanize,我们可以高效地完成许多Web自动化任务。
**机械师4j(mechanize4j)**是一个基于Java的开源爬虫库,它为Web自动化提供了方便。在编程领域,爬虫是用于自动抓取网页信息的工具,而mechanize4j则是这类工具的一个实现。该库模仿了Python的mechanize库,使得...
Mechanize提供了对HTTP请求的控制,使爬虫能更好地模仿用户操作。下面将详细介绍如何使用Mechanize以及结合其他模块来编写爬虫。 首先,要使用Mechanize,确保已经安装了这个模块。如果没有,可以通过`easy_install...
2. **自动化测试**:在测试web应用程序时,mechanize可以帮助自动化点击、填写表单等操作,提高测试效率。 3. **数据采集**:对于需要登录才能访问或者动态加载的数据,mechanize可以自动处理登录流程并获取数据,...
**WWW-Mechanize-Chrome** 是一个Perl模块,它扩展了流行的WWW-Mechanize库,使其能够模拟用户在Google Chrome浏览器中...通过学习和掌握这个库,你可以提升你的Web自动化测试和数据抓取能力,节省大量手动操作的时间。
Mechanize的主要优点在于其易于使用的API,使得自动化网页操作变得简单。 在Mechanize中,我们通常使用`get`方法来请求一个URL。例如: ```perl use WWW::Mechanize; my $mech = WWW::Mechanize->new(); $mech->...
《WWW::Mechanize::Firefox:Perl中的自动化Web浏览利器》 在Perl的世界里,WWW::Mechanize是一个广泛使用的库,它允许程序员模拟浏览器的行为,进行自动化网页交互,如填写表单、点击链接等。然而,对于依赖...
1. **初始化**: 使用Mechanize创建一个Web浏览器实例,用于连接到目标网站。 2. **导航**: 通过Mechanize的`get`方法访问网页,模拟用户浏览行为。 3. **解析**: 使用Nokogiri解析网页内容,以便进一步处理。 4. **...
【测试::Mechanize】是Perl编程语言中一个强大的库,专为自动化Web浏览器交互和网页测试而设计。这个库的全名是`WWW::Mechanize`,它模拟了用户在浏览网页时的行为,例如点击链接、填写表单、处理登录和其他交互任务...
标题“使用Perl进行Web / HTTP自动化”涉及到的关键技术领域是使用Perl编程语言来实现网络和HTTP操作的自动化。Perl是一种强大的脚本语言,常用于文本处理、系统管理以及网络编程等任务。在这个主题中,我们将深入...
Mechanize模拟浏览器行为,提供了更直观的API来操作表单、跟踪cookie和导航链接。在Python中,可以创建一个`Browser`对象,然后使用它来填充表单、提交表单和浏览网页: ```python from mechanize import Browser ...
* reportlab:Python 操作 PDF 文件的模块 图形用户界面 * PyQt4:GUI 界面模块 * wxPython-2.6:GUI 编程框架模块 * Tkinter Libary: Tkinter 图形用户界面模块 爬虫 * Mechanize:爬虫连接网站模块 本文总结...