2017-12-20 16 views
0

このプロジェクトでは、「ウェブサイト」をスクラップする必要があります。これは、ローカルフォルダのhtmlファイルです。とにかく、私は各学生のオブジェクトのアンカータグのhref値(URL)にこだわっています。私も他のものを掻き集めているので、残りは無視してください。ここで私はこれまで持っているものである:ここではRubyでのアンカーのhref値の掻き立て

def self.scrape_index_page(index_url) #responsible for scraping the index page that lists all of the students 
    #return an array of hashes in which each hash represents one student. 
    html = index_url 
    doc = Nokogiri::HTML(open(html)) 
    # doc.css(".student-name").first.text 
    # doc.css(".student-location").first.text 
    #student_card = doc.css(".student-card").first 
    #student_card.css("a").text 
end 

enter image description here

は、学生のプロファイルのいずれかです。それらはすべて同じですので、href urlの値を調べるだけです。

<div class="student-card" id="eric-chu-card"> 
    <a href="students/eric-chu.html"> 
     <div class="view-profile-div"> 
     <h3 class="view-profile-text">View Profile</h3> 
     </div> 
     <div class="card-text-container"> 
     <h4 class="student-name">Eric Chu</h4> 
     <p class="student-location">Glenelg, MD</p> 
     </div> 
    </a> 
</div> 

ご協力いただきありがとうございます。

+0

どのような質問ですか? –

+0

'url'またはhtmlのドキュメントサンプルを共有してください – Abdullah

+0

私は学生カードクラスのコンテナのhref値を取得しようとしています。 – alexnewby

答えて

2

あなたは鋸山でアンカータグを取得したら、このようなHREF得ることができます。

anchor["href"] 

をだからあなたの例では、次の操作を実行してHREFを得ることができる:

student_card = doc.css(".student-card").first 
href = student_card.css("a").first["href"] 

一度にすべてのhref値を収集したい場合は、次のようなことができます。

hrefs = doc.css(".student-card a").map { |anchor| anchor["href"] } 
+0

ありがとうございました!これは役に立ちます! – alexnewby

+0

唯一のことは、hrefのエラーが発生しています:StringからIntegerへの暗黙の変換がありません。何が得られるのだろうか? – alexnewby

+0

申し訳ありません。 'css'メソッドを使うと' Nokogiri :: XML :: NodeSet'を返します。 NodeSetの中の 'Nokogiri :: XML :: Element'からhrefを取得したいとします。あなたの例では、 'student_card.css(" a ")。first [" href "]'はhrefを返すべきです。 –

関連する問題