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不仅包括搜索结果.它还包括谷歌链接,如登录,图片,… 是否可以修改“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.我不确定这方面的工作是什么.通过其他一些属性(例如它的动作)选择表单没有问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |