• C# 页面抓取类


    抓取网站页面的内容,简单的类应用,代码如下:

     /// <summary>
            /// 获取页面内容
            /// </summary>
            /// <param name="url">Url链接</param>
            /// <returns></returns>
            public string WebHtmlCon(string url)
            {
                try
                {
                    string htmlCon = "";
                    WebRequest request = WebRequest.Create(url);
                    WebResponse response = request.GetResponse();
                    Stream stream = response.GetResponseStream();
                    using (StreamReader sReader = new StreamReader(stream, Encoding.UTF8))
                    {
                        htmlCon = sReader.ReadToEnd();
                    }
                    return htmlCon;
                }
                catch (Exception e)
                {
                    return e.Message;
                } 
            }
            /// <summary>
            /// 获取页面内容
            /// </summary>
            /// <param name="url">Url链接</param>
            /// <returns></returns>
            public string WebClientHtmlCon(string url)
            {
                try
                {
                    WebClient webclient = new WebClient();
                    webclient.Encoding = Encoding.UTF8;
                    string HtmlCon = webclient.DownloadString(url);
                    return HtmlCon;
                }
                catch (Exception E)
                {
                    return E.Message;
                }
            }

    根据抓取的内容进行实际应用。

    例如api的应用,获取页面内容的json数据,并进行分析获取自己想要的数据:

    json数据分析代码(引用的.Net自带的类库应用):

             /// <summary>
            /// JSON数据解析 返回字典类 引用:System.Web.Extensions 类库
            /// </summary>
            /// <param name="jsonData">json数据</param>
            /// <returns></returns>
            private static Dictionary<string, object> JsonToDictionary(string jsonData)
            {
                JavaScriptSerializer jss = new JavaScriptSerializer();
                return jss.Deserialize<Dictionary<string, object>>(jsonData);
            }

    快递查询API应用:

      /// <summary>
            /// 查询邮件的邮寄状况
            /// </summary>
            /// <param name="con">邮寄公司</param>
            /// <param name="number">邮寄号</param>
            /// <returns></returns>
            public static string SelectYJ(string con, string number)
            {
                string url = "http://www.kuaidi100.com/query?type=" + con + "&postid=" + number;//查询地址
    
                Dictionary<string, object> diclist = new Dictionary<string, object>();
                diclist = JsonToDictionary(WebHtmlCon(url));
    
    
                if (diclist["message"].ToString() == "ok")
                {
                    string KuaiDi = "<table id="showtablecontext" style="border-collapse: collapse; 520px; border-spacing: 0; border:0;">";
                    KuaiDi += "<tbody>";
                    KuaiDi += "<tr><th width='163' style="background: #64AADB; border: 1px solid #75C2EF; color: #FFFFFF; font-size: 14px; font-weight: bold; height: 28px; line-height: 28px; text-indent: 15px;">时间</th><th width='354' style="background: #64AADB; border: 1px solid #75C2EF; color: #FFFFFF; font-size: 14px; font-weight: bold; height: 28px; line-height: 28px; text-indent: 15px;">地点和跟踪进度</th></tr>";
                    ArrayList list = (ArrayList)diclist["data"];
    
                    foreach (Dictionary<string, object> item in list)
                    {
    
                        KuaiDi += " <tr><td style="border: 1px solid #DDDDDD; font-size: 12px; line-height: 22px; padding: 3px 5px;">" + item["time"].ToString() + "</td><td>" + item["context"].ToString() + "</td></tr>";
    
                    }
                    KuaiDi += "</tbody>";
                    KuaiDi += "</table>";
                    return KuaiDi;
                }
                else
                {
                    return "<p style="line-height:28px;margin:0px;padding:0px;color:#F21818; font-size: 14px;">快递公司网络异常,请稍后查询.</p>";
                }
            }

    结果为:

  • 相关阅读:
    18.3.2从Class上获取信息(属性)
    18.3.2从Class上获取信息(方法)
    18.3.2从Class上获取信息(构造器)
    18.3.1获得Class对象
    ClassLoader.loadClass和Class.forName的区别
    java线程池原理
    如何理解「不要用战术上的勤奋掩盖战略上的懒惰」?
    (转)生产者/消费者问题的多种Java实现方式
    Machine learning system design---Error analysis
    Machine learning system design---prioritizing what to work on
  • 原文地址:https://www.cnblogs.com/xiao-bei/p/4422432.html
Copyright © 2020-2023  润新知