Class: GitTrend::Scraper
- Inherits:
-
Object
- Object
- GitTrend::Scraper
- Defined in:
- lib/git_trend/scraper.rb
Constant Summary collapse
- BASE_HOST =
'https://github.com'- BASE_URL =
"#{BASE_HOST}/trending"
Instance Method Summary collapse
- #get(language = nil, since = nil) ⇒ Object
-
#initialize ⇒ Scraper
constructor
A new instance of Scraper.
- #list_all_languages ⇒ Object
Constructor Details
#initialize ⇒ Scraper
Returns a new instance of Scraper.
10 11 12 13 14 15 16 |
# File 'lib/git_trend/scraper.rb', line 10 def initialize @agent = Mechanize.new proxy = URI.parse(ENV['http_proxy']) if ENV['http_proxy'] if proxy @agent.set_proxy(proxy.host, proxy.port, proxy.user, proxy.password) end end |
Instance Method Details
#get(language = nil, since = nil) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/git_trend/scraper.rb', line 18 def get(language=nil, since=nil) projects = [] page = @agent.get(generate_url_for_get(language, since)) page.search('.leaderboard-list-content').each do |content| project = Project.new project.lang = content.search('.repo-leaderboard-title .title-meta').text project.name = content.search('.repo-leaderboard-title a').text project.description = content.search('.repo-leaderboard-description').text project.star_count = (content.search('.repo-leaderboard-meta .repo-leaderboard-meta-item .octicon-star')) project.fork_count = (content.search('.repo-leaderboard-meta .repo-leaderboard-meta-item .octicon-git-branch')) projects << project end projects end |
#list_all_languages ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/git_trend/scraper.rb', line 36 def list_all_languages languages = [] page = @agent.get(BASE_URL) page.search('div.select-menu-item a').each do |content| href = content.attributes['href'].value # objective-c++ => language = href.match(/github.com\/trending\?l=(.+)/).to_a[1] languages << CGI.unescape(language) if language end languages end |