1

Nokogiri を使用して HTML タグのhref値を取得しようとしています。<a>

<div>それらがパス、ファイル、URL、またはIDであるかどうかを識別したいと考えています。

私の現在の仕事は:

hrefvalue = []
html.css('a').each do |atag|
        hrefvalue << atag['href']
end

a で可能な値は次のhrefとおりです。

somefile.html
http://www.someurl.com/somepath/somepath
/some/path/here
#previous

値が有効な完全な URL、ファイル、パスなどであるかどうかを識別するメカニズムはありますか?

4

3 に答える 3

3

URIを試してください:

require 'uri'

URI.parse('somefile.html').path
=> "somefile.html"

URI.parse('http://www.someurl.com/somepath/somepath').path
=> "/somepath/somepath"

URI.parse('/some/path/here').path
=> "/some/path/here"

URI.parse('#previous').path
=> ""
于 2012-10-22T19:39:08.887 に答える
2

Nokogiri は ruby​​ の URI や open-uri と一緒に使用されることが多いため、その場合はそのメソッドにアクセスできます。これを使用して、URI の解析を試みることができます (を使用URI.parse)。URI.join(base_uri, retrieved_href)base_uri を保存していれば、通常は を使用して完全な URL を作成することもできます。

(編集/補足:使用に関する詳細はURI.joinこちらから入手できます:https://stackoverflow.com/a/4864170/624590 ; URI.joinURIオブジェクトではなく文字列をパラメーターとして受け取るため、必要に応じて強制することに注意してください)

基本的に、あなたの質問に答えるために

値が有効な完全な URL、ファイル、パスなどであるかどうかを識別するメカニズムはありますか?

retrieve_href と base_uri が適切な形式で、retrived_href == 結合されたペアである場合、それは絶対パスです。それ以外の場合は相対的です (ここでも、適切な形式の入力を想定しています)。

于 2012-10-22T19:40:32.103 に答える