nokogiri | Nokogiri makes it easy and painless to work with XML | Parser library

 by   sparklemotion C Version: v1.15.2 License: MIT

kandi X-RAY | nokogiri Summary

kandi X-RAY | nokogiri Summary

nokogiri is a C library typically used in Utilities, Parser applications. nokogiri has no bugs, it has a Permissive License and it has medium support. However nokogiri has 2 vulnerabilities. You can download it from GitHub.

Nokogiri (鋸) makes it easy and painless to work with XML and HTML from Ruby.

            kandi-support Support

              nokogiri has a medium active ecosystem.
              It has 6027 star(s) with 911 fork(s). There are 160 watchers for this library.
              There were 6 major release(s) in the last 12 months.
              There are 95 open issues and 1791 have been closed. On average issues are closed in 52 days. There are 16 open pull requests and 0 closed requests.
              It has a neutral sentiment in the developer community.
              The latest version of nokogiri is v1.15.2

            kandi-Quality Quality

              nokogiri has 0 bugs and 0 code smells.

            kandi-Security Security

              nokogiri has 2 vulnerability issues reported (0 critical, 0 high, 2 medium, 0 low).
              nokogiri code analysis shows 0 unresolved vulnerabilities.
              There are 0 security hotspots that need review.

            kandi-License License

              nokogiri is licensed under the MIT License. This license is Permissive.
              Permissive licenses have the least restrictions, and you can use them in most projects.

            kandi-Reuse Reuse

              nokogiri releases are available to install and integrate.
              Installation instructions, examples and code snippets are available.
              nokogiri saves you 52985 person hours of effort in developing the same functionality from scratch.
              It has 67022 lines of code, 2992 functions and 289 files.
              It has high code complexity. Code complexity directly impacts maintainability of the code.

            Top functions reviewed by kandi - BETA

            kandi has reviewed nokogiri and discovered the below as its top functions. This is intended to give you an instant insight into nokogiri implemented functionality, and help decide if they suit your requirements.
            • Gets the DTM handle associated with the given DOM Node
            • Get the next node
            • Constructs the node map
            • Get the handle from a node
            • Joins a baseURI and a relative URI
            • Removes dot segments from the path
            • Checks if the given node is a matching element
            • Checks if a node is a DOM Element or Element
            • Returns an array of Attr attributes for the given element
            • Adds a mapping
            • Adds attributes for an element
            • Add a namespace definition to this node
            • Called when the document is entered
            • Parses the given interpreter
            • Compare two attributes
            • Returns the local name of a node
            • Adds attributes to xml element
            • Returns the attribute s attributes
            • Get the type of the node
            • Gets the attribute s attributes
            • Subclasses should override this method
            • Lookup the namespace URI associated with this node
            • Canonicalize a document
            • Processes the attributes of an element
            • Receive notification of namespace attributes
            • Handle the attributes subtree
            Get all kandi verified functions for this library.

            nokogiri Key Features

            No Key Features are available at this moment for nokogiri.

            nokogiri Examples and Code Snippets

            No Code Snippets are available at this moment for nokogiri.

            Community Discussions


            I'm getting "Error 403" when installing rails
            Asked 2022-Mar-31 at 00:08

            I'm trying to install rails -v 5.2.2 on wsl ubuntu 18.04. Im met with following error:



            Answered 2022-Mar-18 at 11:24

            Solution 1: As proposed by @Unixmonkey downloading the gem on separate machine with no restrictions and copying the gemfile worked.

            Solution 2: Installing ruby through RVM and trusting its certificates



            Is a Ruby 2.x application vulnerable to Nokogiri 1.13.1 vulnerabilities?
            Asked 2022-Feb-22 at 22:55

            I have a Ruby 2.5.1 application that uses Nokogiri 1.12.5. bundle audit says I should upgrade to Nokogiri 1.13.2, however "Update packaged libxml2 (2.9.12 → 2.9.13) and libxslt (1.1.34 → 1.1.35)" states

            Please note that this advisory only applies to the CRuby implementation of Nokogiri < 1.13.2

            The Wikipedia page for CRuby states that Ruby 2.x uses YARV as its interpreter rather than CRuby.
            Am I right to conclude that my application is not vulnerable to this issue with Nokogiri?

            Please note, I'm aware that Nokogiri 1.13.3 has since been released which reverts one of these fixes, and that I should be on a more up to date Ruby.



            Answered 2022-Feb-22 at 14:32

            You should upgrade nokogiri to the latest possible for your project, especially when dealing with security issues. There are some caveats to this particular advisory, so you might not be vulnerable, but when dealing with security it's better to be overly cautious.

            The note on Wikipedia refers to the MRI CRuby implementation as opposed to the others (like jruby).



            Error getting a simple example to work in Rails / Turbo / Hotwire
            Asked 2022-Feb-09 at 10:13

            I am learning Hotwire-rails, following both the and the examples. I am running Ruby 3.0.2 and Rails The symptom is at the very start. After rails new xxx, I edit Gemfile to add gem 'hotwire-rails', then bundle install. At this point my app/javascript/packs/application.js is now:



            Answered 2021-Nov-11 at 12:27

            This seems like everything is working correctly rails just likes to output what its doing to the console but it should have added those to your file.



            Unable to load nokogiri in docker container on M1 Mac
            Asked 2022-Feb-07 at 09:48

            I am building a linux docker image on an M1 mac (FROM ruby:3.0.2-alpine3.12 if it matters).

            When I attempt to perform a bundle exec in my container, ruby complains that it is unable to load nokogiri. If I simply start ruby and try to require nokogiri I get the same result:



            Answered 2022-Feb-07 at 09:48

            I had a similar problem with a Rails app that has dependency on Nokogiri running on an Alpine based container on my Macbook M1. Here is what I did:

            1. Reading the Nokogiri documentation, I found out that aarch64-linux (the architecture used inside the Docker container) is actually supported, but it requires glibc >= 2.29.

            2. I am far from being an expert but, as far as I know, Alpine distributions don't include glibc but musl. Fortunately, there are ways to run programs that need glibc in Alpine.

            3. I personally followed the first option, that is, I installed gcompat. I just needed to add gcompat to the list of packages to install in my Dockerfile.

              RUN apk add --no-cache ... gcompat

            4. After that change, things went smoothly and the Rails app started up with no issues.

            Again, I am not an expert and the above might be inaccurate, but it did the magic for me. I hope it can help you too.



            Target element in script tag with Nokogiri
            Asked 2022-Feb-04 at 16:35

            Can anyone help me extract the authors name from this script tag using Nokogiri.

            I can so far get to the script tag using:

            parsed_page.xpath("//script[@type ='application/ld+json']")

            I am trying to get the name "Kevin McCart"



            Answered 2022-Feb-04 at 16:35

            Once you get to the script tag, nokogiri's work is done, and it's time to parse JSON.



            output XML nodes out into individual files
            Asked 2022-Jan-18 at 18:20

            I am trying to create individual files from the nodes of a XML file. My issue is no matter what way I try it I seem to be getting stuck in a nested loop and I either keep rewriting each file until they are just the same node data over and over, or I run all of the nodes per loop instance. I'm sure this should be pretty easy but I'm getting hung up somewhere.



            Answered 2022-Jan-17 at 00:20

            When you use w option it always rewrite onto the file. What you need is to create or append to the file, it's done with the a option. So you can try this:

  ,'a'){ |f| f << item }

            PS. Be sure that split_date as the name of the file is uniq for each node since you want a separate file per node



            Iterations of elements in Nokogiri xpath
            Asked 2021-Dec-30 at 14:35

            I tried to make iteration of some

          • elements

            Iteration won't work as expected:

          • ANSWER

            Answered 2021-Dec-30 at 14:35

            You are missing a dot . at the beginning of your XPath expression.
            Instead of



            How do I set the port correctly in email links during a system test?
            Asked 2021-Nov-20 at 08:41

            I'm writing a System test to confirm the entire sign up flow is working in a Rails 7 app (with the Clearance gem and an email confirmation SignInGuard).

            The test is working fine right up until I "click" the confirm link in the email (after parsing it with Nokogiri). For some reason the URL in the email points to my dev server (port 3000) instead of pointing to the test server (port 49736, 49757, 49991, whatever).

            I could look up the current port the test server is using (it changes every run) and replace the port portion of the URL but that seems quite hacky. Am I missing something obvious or doing something wrong?

            URL in mailer: confirm_email_url(@user.email_confirmation_token)

            Route from rails routes:



            Answered 2021-Nov-20 at 08:41

            The URL used in mailers is specified by:

            In config/environments/test.rb I had set mine to port 3000 when I first installed Clearance:
            config.action_mailer.default_url_options = {host: "localhost:3000"}

            To fix it, I first tried specifying the port dynamically but the suggested method didn't actually work and it seems it isn't necessary. Removing the port number was enough to get my system test passing:
            config.action_mailer.default_url_options = {host: "localhost"}

            As mentioned by Thomas Walpole, the reason this works is that Capybara.always_include_port is set to true. With this setting, attempts to access http://localhost/confirm_email/ (with no port specified) are automatically rerouted to http://localhost:/confirm_email/.

            The always_include_port setting defaults to false in the Capybara gem but it turns out Rails sets it to true when it starts up the System Test server.



            `materialize': Could not find
            Asked 2021-Sep-23 at 15:08

            I'm seeing the following error it only is appearing in cron jobs using the whenever gem. The application is working correctly otherwise. The scheduled job doesn't run. But I can run it manually and it does work.



            Answered 2021-Sep-23 at 15:08

            The issue was related to environment variables and not being able to find the correct path for the gems. I found a solution and updated the schedule.rb file.



            bundle install does not respect Gemfile.lock
            Asked 2021-Aug-19 at 10:30

            I faced some issues with bundle install.

            When we run 'bundle install' , One of the dependency gem in Gemfile.lock is get auto upgraded. As per theory, "bundle install" will look the Gemfile.lock for version and won't resolve the version and will install the same versions. It will resolve only when there is no Gemfile.lock or when we give "bundle update".

            In our server, we having Gemfile.lock but "bundle install" is updated the particular gem mentioned gemfile.lock(it's a dependency gem , so we not specified in gemfile), It should not happen like this, because already one version present in lock file, even though that version is get auto updated, Due to this upgrade some major functionality is broken in the site.

            For your references: bundler version - 1.17.2 ruby version - 2.5.3 gem version - 2.7.6 rails version - 5.2.3 that dependency gem name is "nokogiri", This gem locked as 1.11.7, But it's updated to "1.12.1" when i give "bundle install"

            Any idea to prevent this issue in future?



            Answered 2021-Aug-19 at 10:30

            First of all it'll be great if you shared the Gemfile.lock error so as to know what i particular might be causing that upgrade. But from afar I think as you said this gem is a dependency gem and it is not stated in your gemfile. It could be that another gem also depends on this gem and per that requirement it triggers an upgrade even before your supposed gem line is run which may be leading to the error. Read the error thoroughly and you can identify the gem(s) causing this.

            After your update I have read around on this. Exactly so as stated earlier on, one of these gems could be the reason why your particular gem gets updated with every bundler install. Unfortunately there is no true turn around to solving this but bundler does give a way around. You can use the --frozen option with bundler which freezes your gemfile.lock to the current versions for each gem and does not update any gem but only installs new gems that you have. Unfortunately this has been deprecated and can only be done be done from /.bundle/config. This can be done from the command line in the root of your project. run bundle config frozen true to freeze bundler from updating your gems in gemfile.lock You may have to grant write permissions to your user to be able to edit the bundle configurations. I found this article as well from


            Community Discussions, Code Snippets contain sources that include Stack Exchange Network


            No vulnerabilities reported

            Install nokogiri

            Ruby >= 2.6
            JRuby >=
            Because Nokogiri is a C extension, it requires that you have a C compiler toolchain, Ruby development header files, and some system dependencies installed.


            All official documentation is posted at (the source for which is at, and we welcome contributions). Consider subscribing to Tidelift which provides license assurances and timely security notifications for your open source dependencies, including Nokogiri. Tidelift subscriptions also help the Nokogiri maintainers fund our automated testing which in turn allows us to ship releases, bugfixes, and security updates more often.
            Find more information at:

            Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items

            Find more libraries

            Stay Updated

            Subscribe to our newsletter for trending solutions and developer bootcamps

            Agree to Sign up and Terms & Conditions

            Share this Page

            share link

            Explore Related Topics

            Consider Popular Parser Libraries


            by markedjs


            by swc-project


            by ruanyf


            by nikic

            Try Top Libraries by sparklemotion


            by sparklemotionRuby


            by sparklemotionRuby


            by sparklemotionRuby


            by sparklemotionRuby


            by sparklemotionRuby