Sha256: 14fbf941d6e39aaf99c2b8efb2e9c256f40b471e049df03d499f1703c3d5c8b5

Contents?: true

Size: 828 Bytes

Versions: 4

Compression:

Stored size: 828 Bytes

Contents

# frozen_string_literal: true

require 'scrapework'

# Mapping for repo tab (paginated
class RepositoryTabPage < Scrapework::Object
  has_many :repositories

  map :repositories do |html|
    html.css('a[itemprop="name codeRepository"]').map do |a|
      { url: URI.join(url, a['href']), name: a.text.strip }
    end
  end

  paginate do |html|
    pages = html.css('.paginate-container .btn')

    pages.map do |page|
      { url: page['href'] } if page && page['href'].present?
    end
  end
end

# Mapping for repository
class Repository < Scrapework::Object
  attribute :name
end

page = RepositoryTabPage.new(url: 'https://github.com/jphager2?tab=repositories')

i = 0
until page.nil?
  page.load
  page.repositories.each do |repo|
    i += 1
    puts "#{i})\t#{repo.name} (#{repo.url})"
  end

  page = page.next_page
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
scrapework-0.1.3 examples/github.rb
scrapework-0.1.2 examples/github.rb
scrapework-0.1.1 examples/github.rb
scrapework-0.1.0 examples/github.rb