2016-07-31 4 views
0

私はUCASウェブサイト(機械化宝石を使用)から多くのデータを拝借していますが、そのほとんどは機能していますが、スコットランドからのエントリ要件を引き出そうとすると、以下は、私が入学要件を見つけて掻き集めるために使用したコードです:Railsデータスケープクエリ/クリーニング結果を機械化する

 entry_link = course_details.search('ul.details_tabs a').first 
     if entry_link 

     # If there is a link to a qualification page for the course go to that 
     details_info[:entry] = process_entry(@mechanize.get(entry_link["href"])) 
     end 
end 


def process_entry(entry_req) 
    entry_array = [] 
    entry_info = {} 

     # Sets all data in hash 
     @requirements = entry_req.search('li.qual-element.qual_range').text.strip 
     entry_info[:req]   = @requirements 

     #Pushes to array, and prints  
     entry_array.push(entry_info) 
     print_entry_info(entry_info) 

しかし、これは何と素晴らしいことではありません。むしろスコットランドhighersまたはAdvanced highersのいずれかに一つだけの結果を返すよりも、それはそれらの両方を引き出し、そのようにして出力:

BBB Typical offerAABB Typical offer 

は、のいずれかでゾーンにとにかくであり、唯一のBBBまたはAABBや道へと引っ張りますgsubなどでAABBまたはBBBのみを表示するようにストリップしますか?どんな助けもありがとうございます。問題がある http://search.ucas.com/course/entryrequirements/448323/anthropology?Vac=2&AvailableIn=2016&IsFeatherProcessed=True&ret=providers#coursedetailsmenu

+0

"[ask]"と "[mcve]"をお読みください。質問自体に問題を示す最低限のコードと最小限のデータを確認する必要があります。 –

+0

'course_details.search( 'ul.details_tabs a')。最初は' course_details.at( 'ul.details_tabs a') 'と書かれています。 –

答えて

0

entry_req.search('li.qual-element.qual_range').text 

search戻っているノードセット、とtextを使用しないでください、このようなデータから引き出されることになる例のページへ

リンク。 NodeSet#textNode#textのドキュメントを参照してください。

あなたの発見したノードを繰り返して、それぞれからテキストを抽出する必要があります。通常は、テキストの配列を返すsearch('some selector').map(&:text)を使用して行います。

関連する問題