0

Webページのソースコンテンツのみを表示できるサードパーティアプリケーションに取り組んでいます。そこから、のhrefようなパターンを持つコンテンツ値のみを収集する必要があります/aems/file/filegetrevision.do?fileEntityId。出来ますか?

HTML * (HTML の一部) *

<td width="50%">
<a href="/aems/file/filegetrevision.do?fileEntityId=10597525&cs=9b7sjueBiWLBEMj2ZU4I6fyQoPv-g0NLY9ETqP0gWk4.xyz">
screenshot.doc
</a>
</td>
4

2 に答える 2

2

簡単に:

require 'nokogiri'

html = '
<td width="50%">
<a href="/aems/file/filegetrevision.do?fileEntityId=10597525&cs=9b7sjueBiWLBEMj2ZU4I6fyQoPv-g0NLY9ETqP0gWk4.xyz">
screenshot.doc
</a>
</td>
'

doc = Nokogiri::HTML(html)
doc.search('a[href]').map{ |a| a['href'] }

どちらが返されますか:

[
    [0] "/aems/file/filegetrevision.do?fileEntityId=10597525&cs=9b7sjueBiWLBEMj2ZU4I6fyQoPv-g0NLY9ETqP0gWk4.xyz"
]

パスの一致をフィルタリングする場合は、次のようなものを使用します。

pattern = Regexp.escape('/aems/file/filegetrevision.do?fileEntityId')
doc.search('a[href]').map{ |a| a['href'] }.select{ |href| href[ %r[^#{ pattern }] ] }

これも、次を返します。

[
  [0] "/aems/file/filegetrevision.do?fileEntityId=10597525&cs=9b7sjueBiWLBEMj2ZU4I6fyQoPv-g0NLY9ETqP0gWk4.xyz"
]

このコードは、ドキュメント内のhrefすべての<a>タグからパラメーターを返しhrefます。2 番目の例では、パスでフィルター処理します。

于 2013-01-09T19:00:49.417 に答える
1
require 'open-uri'
source='http://www.example.com'
page = open(source).read
URI.extract(page,/.*\/aems\/file\/filegetrevision.do?fileEntityId=.*/)
于 2013-01-09T19:27:36.187 に答える