タグ

htmlとSgmlReaderに関するkaorunのブックマーク (2)

  • HtmlAgilityPackよりSgmlReaderがいいと思う - ものがたり

    最近、仕事で他のメンバーが書いたHTMLスクレイパーみたいなコードの大幅な手直しをしているのだけど、ちょっとこれは書いておこうと思ったネタを公開しようと思う。それは.NETHTMLを解析する、より真っ当な方法のことだ。 一言で言うなら、HtmlAgilityPackを使うより、SgmlReaderを使ったほうが良い。理由も簡潔に言うなら、HTMLはSGMLに準拠して設計された仕様だから、SGMLの流儀に従ってロジカルにマークアップを解析できるパーサーを使った方が適切に処理できるし、実際HtmlAgilityPackの解析はSgmlReaderより雑だ。 ちょっと待った。何が「雑」なんだろう? 雑というのはちょっといい加減な物言いだ。HTMLを解析するというのは、そんなに雑だったり厳密だったりするものだろうか? 厳密すぎるHTMLパーサーというのはかえって実用性が低かったりするんじゃないの

    HtmlAgilityPackよりSgmlReaderがいいと思う - ものがたり
  • neue cc - C#でスクレイピング:HTMLパース(Linq to Html)のためのSGMLReader利用法

    Linq to XmlがあるならLinq to Htmlもあればいいのに!と思った皆様こんばんは。まあ、DOMでしょ?ツリーでしょ?XHTMLならそのままXDocument.Loadで行けるよね?XDocument.Parseで行けるよね? ええ、ええ、行けますとも。XHTMLなら、ね、ValidなXHTMLならね。世の中のXHTML詐称の99.99%がそのまま解析出来るわけがなく普通に落ちてくれるので、XDocumentにそのまま流しこむことは出来ないわけです(もちろん、うちのサイトも詐称ですよ!ていうかこのサイトのHTMLは酷すぎるのでそのうち何とかしたい……)。 そこでHtmlを整形してXmlに変換するツールの出番なわけですが、まず名前が上がるのがTidy、の.NET移植であるTidy.NETで、これは論外。とにかく面倒くさい上に、パースしきれてなくてXDocumentに流すと平然と

  • 1