1

画像から Flickr BBCode を取得し、実際の画像リンクのみを見つけて他のすべてのものを無視する Ruby スクリプトを作成しようとしています。

Flickr の BBCode は次のようになります。

<a href="http://www.flickr.com/photos/user/9049969465/" title="Wiggle Wiggle by Anonymous, on Flickr"><img src="https://farm3.staticflickr.com/2864/92917419471_248187_c.jpg" width="800" height="526" alt="Wiggle Wiggle"></a>

私は出力をリンクだけにしようとしています。

これまでのところ、私のコードはこれです

#!/usr/bin/ruby

require 'rubygems'

str1 = ""

puts "What text would you like me to use? "
text = gets

text.scan(/"([^"]*)"/) { str1 = $1}

puts str1

入力をスキャンして、https で始まり引用符で終わる部分だけを見つける方法を知る必要があります。どんな助けでも大歓迎です

4

3 に答える 3

2

HTML を regex で解析しようとしないでください。

代わりに、HTML パーサーを使用してください。のこぎりとかhttp://nokogiri.org/

require 'nokogiri'
doc = Nokogiri::HTML.parse '<a href="http://www.flickr.com/photos/user/9049969465/" title="Wiggle Wiggle by Anonymous, on Flickr"><img src="https://farm3.staticflickr.com/2864/92917419471_248187_c.jpg" width="800" height="526" alt="Wiggle Wiggle"></a>'

doc.css('a').each do |link|
  puts link.attr(:href)
end
于 2013-06-19T19:43:48.703 に答える
1

HTML を解析しようとしている場合は、適切な HTML パーサーを実際に使用する必要があります。

たとえば、これはNokogiriでは簡単です。

require 'nokogiri'

bbcode = %Q[<a href="http://www.flickr.com/photos/user/9049969465/" title="Wiggle Wiggle by Anonymous, on Flickr"><img src="https://farm3.staticflickr.com/2864/92917419471_248187_c.jpg" width="800" height="526" alt="Wiggle Wiggle"></a>]

Nokogiri::HTML(bbcode).css('a')[0]['href']
# => "http://www.flickr.com/photos/user/9049969465/"

そこにエラーチェックを追加する必要があることは明らかですが、それが基本です。

于 2013-06-19T19:44:48.467 に答える