.Net获取网页源代码,淘宝宝贝排名

  • using System;  
  • susing System.Collections.Generic;   
  • using System.Web;   
  • using System.Web.UI;   
  • using System.Web.UI.WebControls;   
  • using System.IO;   
  • using System.Net;   
  • using System.Text;   
  •   
  • public partial class Thief : System.Web.UI.Page   
  • {   
  •     protected void Page_Load(object sender, EventArgs e)   
  •     {   
  •        string url = "http://www.myspace.cn/";       //要获取的网页地址   
  •        WebRequest req = WebRequest.Create(url);   
  •        WebResponse res = req.GetResponse();   
  •        Stream resStream = res.GetResponseStream();   
  •        StreamReader sr = new StreamReader(resStream, Encoding.UTF8);   
  • //StreamReader sr = new StreamReader(resStream, Encoding.GetEncoding("gbk"));支持中文
  •        string contentHTML = sr.ReadToEnd();    //读取网页的源代码      
  •        Response.Write(contentHTML);   
  •        resStream.Close();   
  •        sr.Close();   
  •     }   
  • }
  • 在测试用于查询淘宝排名
  • 用于淘宝宝贝排名查询时要先清Cookies
    #region 获取商品在淘宝上的位置
    /// <summary>
            /// 获取商品在淘宝上的位置
            /// </summary>
            /// <param name="ProUrl">淘宝宝贝地址</param>
            /// <param name="ProUrl">淘宝搜索关键字</param>
            /// <returns>几页,行,列</returns>
            public string GetTaobaoRanking(string ProUrl, string key)
            {
                string ProId = TaskHelper.GetProIdByProUrl(ProUrl);
                string ProYeHangLei = "无结果";
                int[] list = new int[3];           
                int pageIndex = 0;
                int pageSize = 0;//页
                int pageRow = 0;//行
                int pageClu = 0;//列
                int nidnum = 0;
                int nidnum1 = 0;
                bool bl = false;
                while (true)
                {
                    pageSize++;
                    string url = "http://s.taobao.com/search?initiative_id=staobaoz_" + DateTime.Now.ToString("yyyyMMdd") + "&js=1&style=grid&q=" + key + "&stats_click=search_radio_all%3A1&s=" + pageIndex;  //要获取的网页地址                   
                    string htmlString = "";
                    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);   //声明一个HttpWebRequest请求         
                    request.Timeout = 30000;       //设置连接超时时间                        
                    request.Headers.Set("Pragma", "no-cache");
                    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                    Stream streamReceive = response.GetResponseStream();
                    Encoding encoding = Encoding.GetEncoding("gb2312");
                    StreamReader streamReader = new StreamReader(streamReceive, encoding);
                    htmlString = streamReader.ReadToEnd();//获取搜索页的源码
                    string htmlstr = htmlString.ToLower().Replace("&nid=", "");
                    string str1 = "";//存放从查到商品截取到结尾的字符38382585967  8
                    string nidstr = "nid=\"" + ProId + "\"";
                    if (htmlstr.IndexOf(nidstr) >= 0)//如果有查到当前商品38032939139
                    {
                        str1 = htmlstr.Substring(htmlstr.IndexOf(nidstr) + 11);//得到从查到商品截取到结尾的字符
                        nidnum = (str1.Length - str1.Replace("nid=", "").Length) / 4;//从查到商品到结尾共有多少个宝贝
                        if (pageSize==1)//第一页会加载11行
                        {
                            nidnum1 = 44 - nidnum;//要查宝贝位于当前页第几个
                        }
                        else
                        {
                            nidnum1 = 40 - nidnum;//要查宝贝位于当前页第几个
                        }
                        

                        break;
                    }
                    pageIndex += 40;
                }
                if (nidnum1 % 4 == 0)
                {
                    pageRow = nidnum1 / 4;
                }
                else
                {
                    pageRow = nidnum1 / 4 + 1;
                }
                pageClu = nidnum1 % 4 == 0 ? 4 : nidnum1 % 4;

                ProYeHangLei = "第" + pageSize + "页.第" + pageRow + "行.第" + pageClu + "列";
                Response.Write(ProYeHangLei);
                Response.End();
                return ProYeHangLei;
            }
    #endregion
    #region 根据传来商品地址,提取商品ID
            /// <summary>
            /// 根据传来商品地址,提取商品ID
            /// </summary>
            /// <param name="ProUrl">宝贝地址</param>
            /// <returns></returns>
            public static string GetProIdByProUrl(string ProUrl)
            {
                //用后来要比较的产品地址(可多条)比较要去比较的老地址(一条)
                string ProId = "";
                if (ProUrl.IndexOf("?id=") != -1)
                {
                    ProId = ProUrl.Substring(ProUrl.IndexOf("?id=") + 4);
                    if (ProId.IndexOf("&") != -1)
                    {
                        ProId = ProId.Substring(0, ProId.IndexOf("&"));
                    }
                    else
                    {
                        ProId = ProId.Substring(0);
                    }
                }
                if (ProUrl.IndexOf("&id=") != -1)
                {
                    ProId = ProUrl.Substring(ProUrl.IndexOf("&id=") + 4);
                    if (ProId.IndexOf("&") != -1)
                    {
                        ProId = ProId.Substring(0, ProId.IndexOf("&"));
                    }
                    else
                    {
                        ProId = ProId.Substring(0);
                    }
                }
                return ProId;
            }
            #endregion
posted @ 2016-07-29 14:04  离。  阅读(53)  评论(0编辑  收藏  举报