code: def each_link
        return enum_for(__method__) unless block_given?
  
        filter = lambda { |url|
          yield url unless (url.nil? || url.empty?)
        }
  
        each_redirect(&filter) if is_redirect?
  
        if (html? && doc)
          doc.search('//a[@href]').each do |a|
            filter.call(a.get_attribute('href'))
          end
  
          doc.search('//frame[@src]').each do |iframe|
            filter.call(iframe.get_attribute('src'))
          end
  
          doc.search('//iframe[@src]').each do |iframe|
            filter.call(iframe.get_attribute('src'))
          end
  
          doc.search('//link[@href]').each do |link|
            filter.call(link.get_attribute('href'))
          end
  
          doc.search('//script[@src]').each do |script|
            filter.call(script.get_attribute('src'))
          end
        end
      end
docs: Enumerates over every link in the page.
  
   @yield [link]
     The given block will be passed every non-empty link in the page.
  
   @yieldparam [String] link
     A link in the page.
  
   @return [Enumerator]
     If no block is given, an enumerator object will be returned.
  
   @since 0.3.0