求蜘蛛程序源码或讲哈思路
解决方案 »
- 请教如何在2个窗体间传递参数.
- 本人决心花大力气学习MS DOTNET技术,恳求路过走过的进来拿分
- 如何使两个Editbox的内容同步
- 我有一个notifyIcon在SYS TRAY中,如何能判定是左键单机的?
- 一直没解决:C#中如何使用WMI获取安装的软件列表,安装的组件列表?救急啊!!!
- 求教
- 20问个对大家来说可能比较简单的问题:)。
- C#调用oracle存储过程,返回的受影响行数总为1,切数据库数据没动,但是在plsql中可以执行该存储过程,不知为何,请高手帮忙解答一下 谢谢
- 服务管理器中的SQLSEVER启动不了。各位大哥救我
- C#程序能否编译成本地.exe?
- 关于通过网络传输文件的问题
- 求 C#和ASP.NET程序设计教程 电子版
你想知道的是哪个方面的应用?⑴ HTML分析 ⑵ 页面处理 ⑶ 多线程 ⑷ 确定何时完成任务.
parse.Source = " Hello World"; 接下来就可以利用循环来检查HTML文档包含的所有文本和标记。通常,检查过程可以从一个测试Eof方法的while循环开始: while(!parse.Eof())
{
char ch = parse.Parse(); Parse方法将返回HTML文档包含的字符--它返回的内容只包含那些非HTML标记的字符,如果遇到了HTML标记,Parse方法将返回0值,表示现在遇到了一个HTML标记。遇到一个标记之后,我们可以用GetTag()方法来处理它。 if(ch==0)
{
HTMLTag tag = parse.GetTag();
} 一般地,蜘蛛程序最重要的任务之一就是找出各个HREF属性,这可以借助C#的索引功能完成。例如,下面的代码将提取出HREF属性的值(如果存在的话)。 Attribute href = tag["HREF"];
string link = href.Value; 获得Attribute对象之后,通过Attribute.Value可以得到该属性的值。
页面处理
首先要做的是下载HTML页面,这可以通过C#提供的HttpWebRequest类实现: HttpWebRequest request = (HttpWebRequest)WebRequest.Create(m_uri);
response = request.GetResponse();
stream = response.GetResponseStream(); 接下来就从request创建一个stream流。在执行其他处理之前,要先确定该文件是二进制文件还是文本文件,不同的文件类型处理方式也不同。下面的代码确定该文件是否为二进制文件。 if( !response.ContentType.ToLower().StartsWith("text/") )
{
SaveBinaryFile(response);
return null;
}
string buffer = "",line; 如果该文件不是文本文件,将它作为二进制文件读入。如果是文本文件,首先从stream创建一个StreamReader,然后将文本文件的内容一行一行加入缓冲区。 reader = new StreamReader(stream);
while( (line = reader.ReadLine())!=null )
{
buffer+=line+"\r\n";
} 装入整个文件之后,接着就要把它保存为文本文件。 SaveTextFile(buffer);
有的已经很完善了