C#小程序实现从百度摘取搜索结果
百度不使用xhtml,这样使得.NET原有的XML功能就不是那么好用了。
(而且,谁会真正喜欢DOM呢?用起来多累人啊!)
不过百度的页面很不规则,所以迫不得已使用了大量的硬编码。
因此,这个程序对百度的页面设计做了相当多的假设,无法很好的适应百度的页面结构在未来的改变。
还好这种小程序写起来轻松,所以没事改一改也没事。
另外这个程序使用了大量的正则表达式,这可能会使得它在效率上不适合于用来整合各个搜索引擎的结果。
如果需要在一个页面同时展示几个搜索引擎的结果,我建议使用iframe标签,或者呢,就是让后台把网页通过ajax发给前台,然后在前台用js产生页面。
特别注意,程序中使用了FCL中好用的url编码的功能,因此必须额外添加对System.Web这个程序集的引用。
代码——百度机器人
1 using System;
2 using System.Collections.Generic;
3 using System.Text;
4 using System.Text.RegularExpressions;
5 using System.Web;
6 using System.Net;
7 using System.IO;
8 namespace baiduRobotStrim
9 {
10 struct BaiduEntry
11 {
12 public string title, brief, link;
13 }
14 class Program
15 {
16 static string GetHtml(string keyword)
17 {
18 string url = @"http://www.baidu.com/";
19 string encodedKeyword = HttpUtility.UrlEncode(keyword, Encoding.GetEncoding(936));
20 //百度使用codepage 936字符编码来作为查询串,果然专注于中文搜索……
21 //更不用说,还很喜欢微软
22 //谷歌能正确识别UTF-8编码和codepage这两种情况,不过本身网页在HTTP头里标明是UTF-8的
23 //估计谷歌也不讨厌微软(以及微软的专有规范)
24 string query = "s?wd=" + encodedKeyword;
25
26 HttpWebRequest req;
27 HttpWebResponse response;
28 Stream stream;
29 req = (HttpWebRequest)WebRequest.Create(url + query);
30 response = (HttpWebResponse)req.GetResponse();
31 stream = response.GetResponseStream();
32 int count = 0补充:软件开发 , C# ,
上一个:C# 接口的显式实现和隐式实现
下一个:分析C#中Dialog控件
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,
部分文章来自网络,