网页采集分析的几个有用工具
http://time-is-life.cnblogs.com/articles/335554.html
2、
SgmlReader
http://code.msdn.microsoft.com/SgmlReader
有的时候,我们开发的应用需要抓取网页的内容借为己用,如QQ网站的天气信息和新闻等,和Google等搜索爬虫的机制不同之处在于抓取目标的页面对开发人员而言是已知的。我们有理由避免过多的使用正则表达式的繁冗分析过程,如果能够在获取目标网页的HTML之后通过DOM来解析HTML将是一件非常愉快的事情。这里会遇到两个问题,DOM操作只能在客户端通过Javascript或VBScript等脚本语言进行,加上HTML自身不是非强格式的,不能使用类似XSL对XML解析的方式进行操作。不过既然写这篇Blog,就一定有了解决的办法J。
非常感谢Microsoft的XML大师Chris Lovett为我们带来的SgmlReader这个开源的项目。我们知道,XML和HTML都是Sgml的子集。通过SgmlReader,能够将HTML转换生成格式规范的HTML(Well-Formed HTML,虽然没有这个称呼,但这里暂且这么说),从而可以使用XML的XPath语法读取网页的数据了。那么在.NET Framework下,我们遇到的问题变得如此轻松。
简单写了一个示例程序,用来抓取QQ网站的天气信息,通过更改城市名称和XPath获得网页内容。
代码:下载
PS:除了SgmlReader之外,还有Simon Mourier的.NET Html Agility Pack也具有类似的功能。
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 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 源码及例子下载:
SgmlReader Api 手册:
资料来源:学网(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文 件。
这是一段示例代码:
- sgmlReader.DocType = "HTML";
- {
- xmlWriter.WriteNode(sgmlReader,
- }
- }
- XmlDocument xmlDoc =
微软.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>