我现在想写一个程序,输入关键字,比如“软件下载”,然后就会调用百度搜索这个关键字,同时能获取搜索的结果,比如有多少个搜索结果等等。
其实现在是想做一个排名查询软件,比如某个关键字,用程序不停的搜索,如果发现该关键字,那就获取结果,包括结果数量、排名等等。
谁有思路,可以提供一下,如果有类似的源码最好,有偿报答。

解决方案 »

  1.   

    http://www.baidu.com/s?wd="+ 你的参数 +"&ie=utf-8
      

  2.   

    楼上的能详细一点吗?这个我是知道的,问题是怎么用程序完全实现,好像又要post 又要get的,我不懂。
      

  3.   

    ... 这个太简单了,一般就是用HttpRequest发请求,然后针对结果进行正则匹配
      

  4.   


     #region 同步通过GET方式发送数据
            /// <summary>
            /// 通过GET方式发送数据
            /// </summary>
            /// <param name="Url">url</param>
            /// <param name="postDataStr">GET数据</param>
            /// <param name="cookie">GET容器</param>
            /// <returns></returns>
            public string SendDataByGET(string Url, string postDataStr, ref CookieContainer cookie)
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url +( postDataStr == "" ? "" : "?") + postDataStr);
                if (cookie.Count == 0)
                {
                    request.CookieContainer = new CookieContainer();
                    cookie = request.CookieContainer;
                }
                else
                {
                    request.CookieContainer = cookie;
                }            request.Method = "GET";
                request.ContentType = "text/html;charset=UTF-8";
                
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                Stream myResponseStream = response.GetResponseStream();
                StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
                string retString = myStreamReader.ReadToEnd();
                myStreamReader.Close();
                myResponseStream.Close();            return retString;
            }
            #endregion
    http://www.baidu.com/s?wd="+ 你的参数 +"&ie=utf-8
    通过上面的URL调用SendDataByGET方法.即可得到你搜索数据的第一页.然后用正则分析所得到的数据..要第二页同样可以通过正则得到第二页链接.再继续调用那个方法即可....
      

  5.   


    #region 同步通过GET方式发送数据
            /// <summary>
            /// 通过GET方式发送数据
            /// </summary>
            /// <param name="Url">url</param>
            /// <param name="postDataStr">GET数据</param>
            /// <param name="cookie">GET容器</param>
            /// <returns></returns>
            public string SendDataByGET(string Url)
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
                request.Method = "GET";
                request.ContentType = "text/html;charset=UTF-8";
                
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                Stream myResponseStream = response.GetResponseStream();
                StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
                string retString = myStreamReader.ReadToEnd();
                myStreamReader.Close();
                myResponseStream.Close();            return retString;
            }
            #endregion两参数没什么用..给你去掉..
      

  6.   

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Text.RegularExpressions;
    using System.Net;
    using System.IO;namespace ConsoleDemo
    {
        public class Program
        {
            static void Main(string[] args)
            {
                BaiduSearch baidu = new BaiduSearch();
                Console.WriteLine(baidu.Search("新浪"));
            }
        }    class BaiduSearch
        {
            protected string uri = "http://www.baidu.com/s?wd=";
            protected Encoding queryEncoding = Encoding.GetEncoding("gb2312");
            protected Encoding pageEncoding = Encoding.GetEncoding("gb2312");
            protected string resultPattern = @"(?<=找到相关结果[约]?)[0-9,]*?(?=个)";        public int Search(string word)
            {
                string html = string.Empty;
                string uriString = uri + System.Web.HttpUtility.UrlEncode(word, queryEncoding);
                try
                {
                    html = WebFunc.GetHtml(uriString, pageEncoding);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }            int count = 0;
                count = GetSearchCount(html);            return count;
            }        public virtual int GetSearchCount(string html)
            {
                int result = 0;
                string searchcount = string.Empty;            Regex regex = new Regex(resultPattern);
                Match match = regex.Match(html);            if (match.Success)
                {
                    searchcount = match.Value;
                }
                else
                {
                    searchcount = "0";
                }            if (searchcount.IndexOf(",") > 0)
                {
                    searchcount = searchcount.Replace(",", string.Empty);
                }            int.TryParse(searchcount, out result);            return result;
            }
        }    static class WebFunc
        {
            public static string GetHtml(string url)
            {
                return GetHtml(url, Encoding.UTF8);
            }        public static string GetHtml(string url, Encoding encoding)
            {
                WebRequest request;
                request = WebRequest.Create(url);
                request.Credentials = CredentialCache.DefaultCredentials;
                WebResponse response;
                response = request.GetResponse();
                return new StreamReader(response.GetResponseStream(), encoding).ReadToEnd();
            }
        }
    }