http://www.twitterholic.com/

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

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2008/09/13 05:00:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:backupper No.1

回答回数95ベストアンサー獲得回数10

ポイント35pt

素朴に正規表現で。

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

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

id:moro No.2

回答回数23ベストアンサー獲得回数10

ポイント35pt

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
id:kenkitii No.3

回答回数2ベストアンサー獲得回数1

ポイント10pt

短めに書いてみました。

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]

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません