我正在开发第三方应用程序,我只能查看网页源内容。从那里我只收集一些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>
答案 0 :(得分: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
参数。在第二个示例中,它将按路径过滤它们。
答案 1 :(得分:1)
require 'open-uri'
source='http://www.example.com'
page = open(source).read
URI.extract(page,/.*\/aems\/file\/filegetrevision.do?fileEntityId=.*/)