日期:2014-05-16  浏览次数:20824 次

HtmlAgilityPack 抓取页面的乱码处理
HtmlAgilityPack 抓取页面的乱码处理


用来解析 HTML 确实方便。不过直接读取网页时会出现乱码。
实际上,它是能正确读到有关字符集的信息,怎么会在输出时,没有取到正确内容。
因此,读两次就可以了。

#if interactive
#r @"E:\htmlagilitypack-99964\Trunk\HtmlAgilityPack\bin\fx.4.0\Debug\HtmlAgilityPack.dll"
#endif
//open System
//open System.Xml

//   hexun -- GB2312
//   tianya -- UTF-8

//let url = @"http://hadstj.blog.hexun.com/88419406_d.html"
let url = @"http://bbs.tianya.cn/post-worldlook-873912-1.shtml"
let html = new HtmlAgilityPack.HtmlWeb()
let doc0 = html.Load  ( url )
html.OverrideEncoding <- doc0.Encoding
let doc = html.Load  ( url )

let title = doc.DocumentNode.SelectSingleNode("//title").InnerText
printfn "%s" title

doc.DocumentNode.SelectNodes("//div")
|> Seq.map ( fun i -> i.InnerText )
|> Seq.iter   ( printfn "%s" )