0

Scala でメタ タグを解析しようとしています。次のように、XMLマッチングでこれを試してみました

`html // meta ...` etc,

しかし、この特定のページのこれらのメタ タグには終了タグまたは... />囲みがないため、不正な XML エラーが発生します。

したがって、次の HTML の場合、

val html = """<meta name="description" content="This is some meta description">"""

次の正規表現マッチャーを使用しています。

val metaDescription = """.*meta name="Description" content="([^"]+)"""".r
  • と照合しようとするとval metaDescription(desc) = html、scala.MatchError が発生します。
  • 試行錯誤するmetaDescription.findAllIn(html)と、説明だけでなく、文字列全体が取得されます。

内部の値だけを取得するにはどうすればよいcontentですか?

編集

私が望んでいた結果を得ました:

metaDescription.findAllIn(html).matchData foreach {
  desc => println(desc.group(1))
} 

しかし、それは長い道のりのようです。より良い解決策はありますか?

4

1 に答える 1

2

Scala XMLとTagSoupは、タグスープをScalaXMLで直接使用する1つの方法を提供します。

代替案を受け入れる場合、Scales Xmlは、代替のSAXパーサーを介してhtmlを解析するための同様の便利なアプローチを提供します。

val html = loadXmlReader(htmlStream, parsers = AlternateSAXFactoryPool)

そのリンクには、TagsoupとNu.Validatorのファクトリの例があります。

于 2013-01-13T11:48:35.683 に答える