加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Ruby – Mechanize:按类名和其他问题选择链接

发布时间:2020-12-17 02:58:21 所属栏目:百科 来源:网络整理
导读:目前我正在看看Mechanize. 我是 Ruby的新手,所以请耐心等待. 我写了一个小测试脚本: require 'rubygems'require 'mechanize'agent = WWW::Mechanize.newpage = agent.get('http://www.google.de')pp page.titlegoogle_form = page.form_with(:name = 'f')go
目前我正在看看Mechanize.
我是 Ruby的新手,所以请耐心等待.

我写了一个小测试脚本:

require 'rubygems'
require 'mechanize'

agent = WWW::Mechanize.new

page = agent.get('http://www.google.de')
pp page.title
google_form = page.form_with(:name => 'f')
google_form.q = 'test'
page = agent.submit(google_form)
pp page.title

page_links = Array.new
page.links.each do |ll|
  page_links << ll
end
puts page_links.size

这有效.但page_links不仅包括搜索结果.它还包括谷歌链接,如登录,图片,…
结果链接拥有一个样式“1”.是否可以只选择class == 1的链接?我该如何实现这一目标?

是否可以修改“agentalias”?如果我拥有一个网站,包括谷歌分析或其他什么,我会在我的网站上看到机械化的浏览器客户端?

我可以按ID而不是名字选择元素吗?我试着用

my_form = page.form_with(:id => 'myformid')

但这不起作用.

解决方法

您可以通过更改代码来构建仅搜索结果链接的列表,如下所示:

page.links.each do |ll|
  cls = ll.attributes.attributes['class']
  page_links << ll if cls && cls.value == 'l'
end

对于page.links中的每个元素ll,ll.attributes是一个Nokogiri :: XML :: Element,ll.attributes.attributes是一个包含链接属性的Hash,因此需要ll.attributes.attributes来获取实际类和在将值与’l’进行比较之前需要进行nil检查

在条件中使用:id来查找表单的问题在于它与Ruby的Object#id方法冲突,以返回Ruby对象的内部id.我不确定这方面的工作是什么.通过其他一些属性(例如它的动作)选择表单没有问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读