我真的很想使用纯css选择器,但是对于类的匹配似乎也很简单,各种_with方法也是如此.但是,与简单地使用css选择器相比,匹配诸如:not(.class)之类的东西非常冗长,而我不知道如何匹配元素层次结构.
有没有办法将Nokogiri元素转换回Mechanize对象,甚至更好地直接从搜索方法中获取它们?
解决方法 与声明的 in this answer一样,您可以使用通过Mechanize :: Page#search或Mechanize :: Page#at检索的Nokogiri :: XML :: Element构建一个新的Mechanize :: Form对象:a = Mechanize.newpage = a.get 'https://stackoverflow.com/'# Get the search form via ID as a Nokogiri::XML::Elementform = page.at '#search'# Convert it back to a Mechanize::Form objectform = Mechanize::Form.new form,a,page# Use it!form.q = 'Foobar'result = form.submit
注意:您必须向构造函数提供Mechanize对象和Mechanize :: Page对象才能提交表单.否则它只是一个没有上下文的Mechanize :: Form对象.
似乎没有中心效用函数将Nokogiri :: XML :: Elements转换为Mechanize元素,而是在需要它们的地方实现转换.因此,编写一个通过CSS或XPath搜索文档并返回Mechanize元素的方法(如果适用)将需要在节点类型上使用相当大的switch-case.不完全是我想象的.
总结以上是内存溢出为你收集整理的ruby – 如何从Mechanize :: Page的搜索方法中获取Mechanize对象?全部内容,希望文章能够帮你解决ruby – 如何从Mechanize :: Page的搜索方法中获取Mechanize对象?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)