人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

http://www.twitterholic.com/
上記のページからtwitterのid(screen name)を100個抜き出してくるプログラムを
Rubyで書いて下さい。

●質問者: akio0911
●カテゴリ:コンピュータ インターネット
✍キーワード:name Ruby screen プログラム
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● backupper
●35ポイント

素朴に正規表現で。

require 'open-uri'

result = []
open('http://www.twitterholic.com/') do |f|
 f.each_line do |line|
 if line =~ %r|<td><a href="/twitter/([^/]+)/|
 result.push($1)
 end
 end
end

puts result.size
puts result

とりあえず条件は満たしてると思います。


2 ● moro
●35ポイント

HTMLパーサのHpricotをつかってみました。

$ gem install hpricot

入っていない場合、でインストールできます。

[screen_name, id]という配列の配列で取得しています。

#!/usr/bin/env ruby
# vim:set fileencoding=utf-8 filetype=ruby
$KCODE = 'u'

require 'rubygems'
require 'hpricot'
require 'open-uri'

uri = "http://www.twitterholic.com/"
selector = "div#wrapper > table > tbody > tr > td:nth(2) > a"

names = Hpricot(open(uri).read).search(selector).map do |e|
 e.inner_text.scan(/(.+)?s?((.+)?)/).shift
end

p names

3 ● ケンキチ
●10ポイント

短めに書いてみました。

100個抜き出してくるとのことですが、任意の個数に変更する場合、3行目の行末の[0,100]の数値を変更して下さい。

require 'open-uri'
url = "http://www.twitterholic.com/"
p open(url).inject([]) {|r, e| (e =~ /a href="\/twitter\/(.+)\/"/) ? r << $1 : r }[0,100]
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ