当前位置:编程学习 > C#/ASP.NET >>

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# ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,