2017-02-19 12 views
1

Githubからユーザー名を取得するための小さなスクリプトを書きました。私が最初にユーザー名の詳細を得ることができますが、私は、ユーザー名のリストをまとめるために同じCSSセレクタクラスで要素のリストを反復処理する方法を理解していない:Nokogiriでliタグをトラバースして値を収集する方法

page = agent.get('https://github.com/angular/angular/stargazers') 

html_results = Nokogiri::HTML(page.body) 

first_username = html_results.at_css('.follow-list-name').text 

first_username_location = html_results.at_css('.follow-list-info').text 

あなたは私を助けることができますpage.bodyfollow-list-...要素のすべてを繰り返し処理し、値を配列のどこかに格納する方法を理解していますか?

答えて

1

ノコギリat_cssを返します。(最初)一致します。マッチング結果の配列を取得する代わりにcssに使用します。

require 'nokogiri' 
require 'open-uri' 
require 'pp' 

html = Nokogiri::HTML(open('https://github.com/angular/angular/stargazers').read) 

usernames = html.css('.follow-list-name').map(&:text) 
locations = html.css('.follow-list-info').map(&:text) 

pp usernames 
pp locations 

は出力:

["Jeff Arese Vilar", 
"Yaroslav Dusaniuk", 
"Matthieu Le brazidec", 
    ... ] 

[" @Wallapop ", 
" Ukraine, Vinnytsia", 
" Joined on Jul 4, 2014", 
... ] 

はちょうどあなたが改ページを処理する必要がありますメンバーの残りの部分を解析することに注意してください。私。

http://github.com/.../stargazers?page=NN 

...ここで、NNはページ番号です。 https://developer.github.com/v3/activity/starring/#list-stargazers

+0

ははるかに高く評価、キャスパーありがとう:はるかに堅牢な方法のGitHub API

Aを使用して

はGithubの天文学リストAPIを使用することです。 – jbk

+0

より正確に言えば、 'at _...'はノードを返し、 'css'、' xpath'または 'search'はNodeSetを返します。ノードセットは、ノードの配列のように多く機能します。 –

関連する問題