草庐IT

Nokogiri

全部标签

ruby - 如何使用Nokogiri和XPath获取具有多个属性的节点

我正在尝试使用Nokogiri来解析带有一些相当古怪的标记的HTML文件。具体来说,我正在尝试获取同时定义了id、多个类和样式的div。标记看起来像这样:titleListofstuff我正在尝试获取里面的问题.我可以毫无问题地获得具有单个id属性的div,但我想不出一种方法让Nokogiri获取具有和两个id类的div。所以这些工作正常:content=@doc.xpath("//div[id='foo']")content=@doc.css('div#foo')但是这些不返回任何东西:content=@doc.xpath("//div[id='bar']")content=@doc

ruby - 使用 Nokogiri 从 HTML 获取父元素

我有以下HTML,我想获取文档中的父项。我使用Nokogiri进行解析:j_text="abcpqr>examplefindbyIDzzzznnnnnsfds"我做到了:doc=Nokogiri::HTML(j_text)现在我想要来自HTML文本上方的父元素,即,,,使用Nokogiri,我该怎么做? 最佳答案 当您在Nokogiri中加载该HTML片段时,它会自动将元素插入到具有嵌套“body”元素的根级“html”元素中。因此,您提供的HTML片段中节点的父级将是“正文”:doc=Nokogiri::HTML(j_text)d

ruby-on-rails - 使用 Mechanize 时如何调试 Net::HTTPInternalServerError 错误?

c:/ruby/lib/ruby/gems/1.8/gems/mechanize-1.0.0/lib/mechanize.rb:259:in`get':500=>Net::HTTPInternalServerError(Mechanize::ResponseCodeError)当我尝试导航到以下网页时出现上述错误http://fakewebsite.com//admin/edit_building.cfm?page=buildings&updateMode=yes&id=1251将链接复制并粘贴到浏览器时,我可以正常导航。注意:该网站确实需要登录,我使用如下代码处理$agent=Mec

ruby - 使用 open-uri 和 nokogiri 在完全加载之前读取 HTML

我正在使用open-uri和nokogiri以及ruby​​来进行一些简单的网络爬虫。有一个问题,有时html在完全加载之前就被读取了。在这种情况下,我无法获取加载图标和导航栏以外的任何内容。告诉open-uri或nokogiri等待页面完全加载的最佳方法是什么?目前我的脚本是这样的:require'nokogiri'require'open-uri'url="https://www.the-page-i-wanna-crawl.com"doc=Nokogiri::HTML(open(url,ssl_verify_mode:OpenSSL::SSL::VERIFY_NONE))puts

ruby - 使用 Mechanize gem 根据链接在 DOM 中的位置返回链接集合

我正在为Mechanize而苦苦挣扎。我希望“单击”一组只能通过其位置(div#content中的所有链接)或其href来识别的链接。以上两种识别方法我都试过了,都没有成功。从文档中,我无法弄清楚如何根据链接在DOM中的位置而不是直接通过链接上的属性返回一组链接(用于单击)。其次,documentation建议你可以使用:href来匹配部分href,page=agent.get('http://foo.com/').links_with(:href=>"/something")但我让它返回链接的唯一方法是传递一个完全限定的URL,例如page=agent.get('http://foo

ruby-on-rails - 在 El Capitan 上安装 Rails 时出现 -lgmp 错误的库未找到(Mac OS 10.11.1 (15B42))

在使用Rubyv2.2.2的ElCapitan(MacOSX10.11.1)上安装Rails时,出现以下错误:ERROR:Errorinstallingnokogiri:ERROR:Failedtobuildgemnativeextension./Users/jon/.rvm/rubies/ruby-2.2.2/bin/ruby-r./siteconf20151117-26799-ux15fd.rbextconf.rb--use-system-librariescheckingiftheCcompileraccepts...***extconf.rbfailed***Couldnotc

ruby - 在 Ruby 中使用 Nokogiri 解析 HTML

使用此HTML代码:....................如何使用Nokogiri选择类为1的第二个或第三个div? 最佳答案 您可以使用Ruby将大型结果集缩减为特定项目:page.css('div.one')[1,2]#Twoitemsstartingatindex1(2nditem)page.css('div.one')[1..2]#Itemswithindicesbetween1and2,inclusive因为Ruby索引从零开始,所以你必须注意你想要的项目。或者,您可以使用CSS选择器来查找nthitem:#Second

ruby - Ruby 中的 XSD 模式验证

我找到了几个关于如何根据模式验证xml文档的来源,但我有一个ruby​​应用程序,我需要在其中验证用户提供的模式本身是否是有效的模式。有没有办法让我检查这个?是否有用于验证XSD架构的XSD架构?或者是否有图书馆或gem可以为我做到这一点? 最佳答案 您可以使用Nokogiri为此:beginschema=Nokogiri::XML::Schema(File.read('invalid_schema.xsd'))rescueNokogiri::XML::SyntaxError=>eputs"InvalidXMLSchema!"end

ruby - 我们可以一起使用 selenium-webdriver 和 nokogiri 吗?

我使用Nokogiri如下:require'nokogiri'require'open-uri'#GetaNokogiri::HTML::Documentforthepagewe’reinterestedin...doc=Nokogiri::HTML(open('http://www.google.com/search?q=sparklemotion'))但是我不好,可能是由于公司的防火墙,我得到了错误:C:/Ruby193/lib/ruby/1.9.1/net/http.rb:762:in`initialize':getaddrinfo:Nosuchhostisknown.(Sock

ruby - Gem 在 irb 中加载但不在控制台中加载

这个让我抓狂。我可以通过irb加载gem:steve@server:/var/www/listings$irbirb(main):001:0>Gem.path=>["/home/steve/.gem/ruby/1.9.1","/usr/local/ruby/lib/ruby/gems/1.9.1"]irb(main):002:0>require'nokogiri'=>true但我无法通过Rails控制台加载它:irb(main):001:0>Gem.path=>["/home/steve/.gem/ruby/1.9.1","/usr/local/ruby/lib/ruby/gems/1