0

私はウェブページを持っています。HTML ソースには、次のテキストが含まれています。

<meta property="og:title" content="John"/>

ジョンは一例で、名前は異なる場合があります。og:title はテキストに 1 回だけ表示されると確信しています。これは私のコードです:

$browser.goto( url )
x = $browser.html.gsub( /^.*<meta property="og:title" content="(.+?)".>/m, '\1' )

変数 x に John という名前があると思っていたのですが、'\1' は、括弧に入れた最初の部分、つまり (.+?)、つまり John ですよね? また、ドットを使用しました。スラッシュ / に一致させるには、より良い方法はありますか?

4

3 に答える 3

2

Watir API の使用:

x = browser.meta.attribute_value "content"

metaと を使用して要素cssにアクセスできませんでしたxpath

于 2012-05-31T20:47:43.007 に答える
1

の値のみが必要な場合content:

html = '<meta property="og:title" content="John"/>'
=> "<meta property=\"og:title\" content=\"John\"/>"
html[/property="og:title" content="([^"]+)"/, 1]
=> "John"

正規表現に慣れていない場合は、"([^"]+)"スローされる可能性があります。これは、「最初から"次の まですべて"を取得する」という意味です。実際には、「二重引用符内のすべてを取得する」という意味です。

于 2012-05-31T21:12:17.717 に答える
1

このコードは、一致するコード (文字列の先頭から /> までのすべて) を「John」に置き換えて、すべての HTML を返します。つまり、"John" の後に、そのメタ プロパティの /> の後にある HTML が続きます。

名前だけを抽出したい場合で、そのタグが 1 回だけ出現する場合は、次のようなものを使用できます。

@browser.html =~ /<meta property="og:title" content="(.+?)"/
x = $1
于 2012-05-31T20:33:04.230 に答える