knygw
knygw

Reputation: 382

Nokogiri: how to find a div by id and see what text it contains?

I just started using Nokogiri this morning and I'm wondering how to perform a simple task: I just need to search a webpage for a div like this:

<div id="verify" style="display:none"> site_verification_string </div>

I want my code to look something like this:

require 'nokogiri'
require 'open-uri'

url = h(@user.first_url)
doc = Nokogiri::HTML(open(url))
if #SEARCH_FOR_DIV#.text == site_verification_string
  @user.save
end

So the main question is, how do I search for that div using nokogiri?

Any help is appreciated.

Upvotes: 11

Views: 16275

Answers (2)

Qwertie
Qwertie

Reputation: 6493

For a simple way to get an element by its ID you can use .at_css("element#id")

Example for finding a div with the id "verify"

html = Nokogiri::HTML(open("http://example.com"))
puts html.at_css("div#verify")

This will get you the div and all the elements it contains

Upvotes: 8

aromero
aromero

Reputation: 25761

html = <<-HTML
  <html>
    <body>
      <div id="verify" style="display: none;">foobar</div>
    </body>
  </html>
HTML
doc = Nokogiri::HTML html
puts 'verified!' if doc.at_css('[id="verify"]').text.eql? 'foobar'

Upvotes: 21

Related Questions