0

我有一个网页。HTML 源代码包含以下文本:

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

约翰就是一个例子,名字可能会有所不同。我确信 og:title 只会在文本中出现一次。这是我的代码:

$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

该代码将返回所有 HTML,并将匹配代码(从字符串开头到并包括 /> 之间的所有内容)替换为“John”。所以归结为“John”,然后是该元属性的 /> 之后的 HTML。

如果您只想提取名称,并且该标签只出现一次,您可以使用类似:

@browser.html =~ /<meta property="og:title" content="(.+?)"/
x = $1
于 2012-05-31T20:33:04.230 回答
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 回答