zoukankan      html  css  js  c++  java
  • webservice+linq

    一、 在网页爬数据

         1、先获得页面的所有html文本

         2、用正则表达式确定需要抓取的数据

         3、用IsMatch方法获得匹配的数据后存盘

            int pagesize = Convert.ToInt32(txtPageSize.Text.Trim());//获取到总共有多少页

            WebClient wc = new WebClient();       //创建实例

            wc.Encoding = Encoding.Default;       //确定编码方式

            for (int i = 1; i <= pagesize; i++)      //循环指定页码数的次数

            {

                string url = txtUrl.Text.Trim() + "?pn=";         //URL上加上get传参的方式传递页码

                if (string.IsNullOrEmpty(txtUrl.Text.Trim()))    //判断是否输入URL

                {

                    return;

                }

                url += i;    //加页码

                、、string html = wc.DownloadString(url);    //获取到当前页的html内容

                MatchCollection mc = Regex.Matches(html, @"[1-9][0-9]{4,11}@(qq|QQ).com");   //匹配正则表达式

                StringBuilder sb = new StringBuilder();

                foreach (Match m in mc)    //对获得的正则匹配结果做循环处理

                {

                    sb.AppendLine(m.Value + ";");   //每一个匹配的结果做一行数据处理

                }

                string s = sb.ToString();          //StringBuilder转为字符串

                File.AppendAllText(@"d:1.txt", s, Encoding.Default);    //把字符串追加保存在文本文件中

            }

    二、webservice

        1、用于不同的系统之间的数据通信。

        2、实例

           A、在web服务项目中添加【web服务(asmx)】类文件。

           B、如果web服务需要验证时在web服务开始时做用户名/密码的验证。

           C、调用web服务

              1)线添加相关web服务的引用:

                  引用-->添加服务引用-->高级-->添加web引用-->指定服务的url-->指定web引用名称-->添加引用

              2) 当修改了web服务内容时除了重新生成外,需要更新web服务:

                  Web Referrences中找web服务项-->点击更新web服务

           D、火车时刻表web服务实例:traintime

              traintime.TrainTimeWebService s = new traintime.TrainTimeWebService();    //创建服务实例

              string strStart = txtStart.Text.Trim();     //接受始发站

              string strEnd = txtEnd.Text.Trim();         //接受终点站

              DataTable dt = s.getStationAndTimeByStationName(strStart, strEnd, "").Tables[0];  //获得表结构的结果集

              GridView1.DataSource = dt;     //结果集指定为GridView的数据源

              GridView1.DataBind();          //绑定GridView

           E、飞机时刻表web服务:airtime

              airtime.DomesticAirline d = new airtime.DomesticAirline();

              string strStart = txtStart.Text.Trim();     //接受始发机场

              string strEnd = txtStart.Text.Trim();       //接受到达机场

              string strFromTime = txtStart.Text.Trim();  //接受起飞日期范围的开始日期

              string strToTime = txtStart.Text.Trim();    //接受起飞日期范围的结束日期

              DataTable dt = d.getDomesticAirlinesTime(strStart, strEnd,strFromTime,strToTime).Tables[0];  //获取结果集

              GridViewataSource = dt;       //结果集指定为GridView的数据源

              GridView1.DataBind();         //绑定GridView

           F、发布方法

               与其他页面的发布时一样的,然后使用时直接告诉url就可以。

        

    三、Linq

        1、概念

           LINQ对任何数据类型的集合进行筛选的操作,如:数组,集合,哈希表,字典之类的数据都可以用LINQ来筛选。

        2、实例

           A、List<string> names = new List<string> { "ni", "dsad", "Jsdsds", "fsd" };

              var nameWithJ = from n1 in names where n1.StartsWith("J") orderby n1 select n1;

                   //在names集合中取出以[J]开头的所有元素

                   //n1 in names:表示n1是遍历names集合用的临时变量

                   //from n1 in names:表示数据源就是names的集合

                   //where n1.StartsWith("J"):筛选条件是n1当中第一字符为[J]的

                   //orderby n1:排序方式是以n1中的内容

                   //select n1:筛选结果返回的字段序列

        

           B、List<Racer> rs = new List<Racer>() {             //创建一个对象集合

                  new Racer{Wins = 21, Country = "China"},new Racer{Wins=11,Country="China"},

                  new Racer{Wins=14,Country="USA"},new Racer{Wins=22,Country="China"},

                  new Racer{Wins=21,Country="China"},new Racer{Wins=35,Country="China"},

                  new Racer{Wins=44,Country="China"},new Racer{Wins=66,Country="USA"},

                  new Racer{Wins=44,Country="Japan"}};

              var rs1 = from r in rs                        //对rs对象集合为数据源

                        group r by r.Country into g         //以Country作为group by的分组因素,结果放入对象g中

                        orderby g.Count() descending, g.Key //根据Count排序,当Count相同的时候根据Key排序

                        where g.Count() >= 2                //只要累计数量大于等于2的

                        select new{KeyName=g.Key ,Count=g.Count()};   //返回有两个字段KeyName和Count的对象集合

        

                foreach (var r in rs1)          //遍历查询结果集

                {

                    Console.WriteLine(r.KeyName.ToString());    //显示返回结果集的第一个字段值

                    Console.WriteLine(r.Count.ToString());      //显示返回结果集的第二个字段值

                }

  • 相关阅读:
    Mac下配置远程Linux 服务器SSH密钥认证自动登录
    Linux(centos)系统各个目录的作用详解
    /usr,/usr/local/ 还是 /opt ?
    linux 新建用户、用户组 以及为新用户分配权限
    linux下如何添加一个用户并且让用户获得root权限
    Spring 数据库读写分离
    python 安装 pyautogui 报错
    java在方法中获取request对象
    客户端通过Feign发起请求 服务端通过request取 json对象
    LongAdder 测试
  • 原文地址:https://www.cnblogs.com/huang3/p/4962654.html
Copyright © 2011-2022 走看看