网页采集分析的几个有用工具

1、HtmlParser入门指南

http://time-is-life.cnblogs.com/articles/335554.html

 

2、

SgmlReader

http://code.msdn.microsoft.com/SgmlReader

 

3、使用XPath解析HTML获取网页内容

有的时候,我们开发的应用需要抓取网页的内容借为己用,如QQ网站的天气信息新闻等,和Google等搜索爬虫的机制不同之处在于抓取目标的页面对开发人员而言是已知的。我们有理由避免过多的使用正则表达式的繁冗分析过程,如果能够在获取目标网页的HTML之后通过DOM来解析HTML将是一件非常愉快的事情。这里会遇到两个问题,DOM操作只能在客户端通过JavascriptVBScript等脚本语言进行,加上HTML自身不是非强格式的,不能使用类似XSLXML解析的方式进行操作。不过既然写这篇Blog,就一定有了解决的办法J

非常感谢MicrosoftXML大师Chris Lovett为我们带来的SgmlReader这个开源的项目。我们知道,XMLHTML都是Sgml的子集。通过SgmlReader,能够将HTML转换生成格式规范的HTMLWell-Formed HTML,虽然没有这个称呼,但这里暂且这么说),从而可以使用XMLXPath语法读取网页的数据了。那么在.NET Framework下,我们遇到的问题变得如此轻松。

简单写了一个示例程序,用来抓取QQ网站的天气信息,通过更改城市名称和XPath获得网页内容。
网页采集分析的几个有用工具 - gbigone - gbigone的博客

代码:下载

PS
:除了SgmlReader之外,还有Simon Mourier.NET Html Agility Pack也具有类似的功能。

 

4、Simon Mourier's WebLog

http://blogs.msdn.com/smourier/archive/2003/06/04/8265.aspx

 

5、解析HTML文件 - 运用SgmlReader类来解析HTML文件

http://hi.baidu.com/zhengjianweilx/blog/item/da3d3844b2062b84b3b7dc7d.html

 

6、

用 SGMLReader把子HTML 转 XML

SgmlReader r = new SgmlReader();
   r.DocType = "HTML";
   r.InputStream = new StringReader(temp);
   StringWriter sw = new StringWriter();
   XmlTextWriter w = new XmlTextWriter(sw);
   while (!r.EOF)
   {
    w.WriteNode(r, true);
   }
   w.Close();
   string temp2 = sw.ToString();
   XmlDocument xmldom = new XmlDocument();
   xmldom.LoadXml(temp2);

 

6、SgmlReader 源码及例子下载:

http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=B90FDDCE-E60D-43F8-A5C4-C3BD760564BC

SgmlReader Api 手册:

http://www.telerik.com/help/radeditor/5.5/RadEditor~Telerik.WebControls.RadEditorUtils.SgmlReader_members.html


资料来源:学网(www.xue5.com),原文地址:http://www.xue5.com/itedu/200802/107745_3.html

 

7、使用SgmlReader 将Html文档整理为规范的XML文档

有多种方式可以在.NET 平台进行HTML文件解析、数据提取,其中最简单、稳妥的办法是先使用工具将Html文档整理成XML文档,再通过XML Dom模型或XPath灵活地进行数据处理。SGML便是一个Html文档整理工具类库:

Microsoft的XML大师Chris Lovett专门开发了一个SGML解析器,叫做SgmlReader,它可以解析HTML文件,甚至将它们转换成一个格式规范的结构。 SgmlReader派生于XmlReader,这就是说,你可以像运用诸如XmlTextReader这样的类来解析XML文件那样来解析HTML文 件。 

这是一段示例代码:


  1.     

  2.        sgmlReader.DocType = "HTML";    

  3.        

  4.            {    

  5.                    xmlWriter.WriteNode(sgmlReader, 

  6.            }    

  7.    }    

  8.    XmlDocument xmlDoc = 

  9.   

  10.    
  11.  
    微软.NET框架下提取在线Web数据的方法
     
    8、实例
    <script language="VBScript">
    Sub AddEmotion(strUrl) 
     On Error Resume Next
     //alert("a")
     set cpAdder = CreateObject("GDABC.NetAPI.CreditLevel")
     //alert(err)
     if 0 = err then
      //alert("c")
      call cpAdder.ShowMe(strUrl)  
      end if
      //alert("b")
    end sub
    Sub OnContextMenu()
     //alert(external.menuArguments.document)
     set doc=external.menuArguments.document
     //alert("1")
     //alert(doc.documentElement.outerHTML)
     //var html=doc.documentElement.outerHTML ;
     //doc.writeln(html)
      //alert(html)
     call AddEmotion(doc.documentElement.outerHTML)
    end sub

    call OnContextMenu()
    </script>
posted @ 2009-04-11 22:56  法巫师  阅读(1153)  评论(2编辑  收藏  举报