C#实现的中国移动官网手机号码采集器

 更新时间:2014年10月31日 09:24:31   投稿:junjie  
这篇文章主要介绍了C#实现的中国移动官网手机号码采集器,本文先是采集号码入库,同时给出了筛选各类靓号的SQL语句,需要的朋友可以参考下

早几天要换号码,到移动营业厅去办说稍微看的顺眼的号码就要预存多少多少。我觉得好坑,但是在官网又找不到稍微顺眼的。无奈之下没办法写了这个采集软件。主要是想弥补官网搜索不方便的缺陷。下面上代码,比较简单:

复制代码 代码如下:

static void Main(string[] args)
{
    string[] t = { "134", "135", "136", "137", "138", "139", "147", "150", "151", "152", "157", "158", "159", "182", "183", "187", "188" };
    string numberPattern = @"<a data-original-title="" title="">.*?)""(.*?)</a>";
 
    for (int i = 0; i < t.Length; i++)
    {
        int pageCount = 1;
        int page = 0;
        string postdata = "page={0}&tdShopSelectionSuc.mobileType=0&tdShopSelectionSuc.selectArea=0731&tdShopSelectionSuc.selectAreaName=%E9%95%BF%E6%B2%99&tdShopSelectionSuc.numberSeg={1}________&tdShopSelectionSuc.numberRule=&tdShopSelectionSuc.searchStr=___________&tdShopSelectionSuc.endNumberRule=&tdShopSelectionSuc.storedValueStart=&tdShopSelectionSuc.storedValueEnd=&tdShopSelectionSuc.compositor=2&tdShopSelectionSuc.switchList=0&retryQuery=yes&numPriceSort=&numSort=1&pages.pageSize=15";
        string posturl = "https://www.hn.10086.cn/Shopping/selects/nos_queryPhoneInfo.action?timeStamp=" + ((DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000) + "" + new Random().Next(100, 999);
 
        for (int p = 0; p < pageCount; p++)//翻页
        {
            Console.WriteLine("正在获取{0}的所有号码,当前页码:{1}", t[i], page);
            string html = HttpHelper.GetHtml(posturl, string.Format(postdata, page, t[i]), true);
            if (html == "") { continue; }
            if (pageCount == 1)
            {
                pageCount = int.Parse(Regex.Match(html, @"var pageCount = '(?.*?)';").Groups["value"].Value);
            }
            MatchCollection ms = Regex.Matches(html, numberPattern);
            foreach (Match m in ms)
            {
                string number = m.Groups["value"].ToString();
                if (!Exists(number))
                {
                    DbHelperSQL.ExecuteSql("INSERT INTO Number(Number)VALUES('" + number + "')");
                }
                Console.WriteLine("号码:" + number);
            }
            page++;
        }
    }
    Console.WriteLine("结束.");
    Console.ReadKey();
}

既然号码采集到数据库了,那就顺便写个SQL把心仪的号码筛选出来吧:

ABAB型:

复制代码 代码如下:

select * from telephone where SUBSTRING(telenumber,8,2)=SUBSTRING(telenumber,10,2) and SUBSTRING(telenumber,8,1)!=SUBSTRING(telenumber,11,1);

AABB型:

复制代码 代码如下:

select * from telephone where SUBSTRING(telenumber,8,1)=SUBSTRING(telenumber,9,1) and SUBSTRING(telenumber,10,1)=SUBSTRING(telenumber,11,1) and SUBSTRING(telenumber,8,1)!=SUBSTRING(telenumber,11,1);

AAAB型:

复制代码 代码如下:

select * from telephone where SUBSTRING(telenumber,8,1)=SUBSTRING(telenumber,9,1) and SUBSTRING(telenumber,9,1)=SUBSTRING(telenumber,10,1) and SUBSTRING(telenumber,8,1)!=SUBSTRING(telenumber,11,1);

ABBB型:

复制代码 代码如下:

select * from telephone where SUBSTRING(telenumber,9,1)=SUBSTRING(telenumber,10,1) and SUBSTRING(telenumber,11,1)=SUBSTRING(telenumber,10,1) and SUBSTRING(telenumber,8,1)!=SUBSTRING(telenumber,11,1);

AAAA型:

复制代码 代码如下:

select * from telephone where SUBSTRING(telenumber,8,2)=SUBSTRING(telenumber,10,2) and SUBSTRING(telenumber,8,1)=SUBSTRING(telenumber,11,1);

相关文章

  • C# List中FindAll用法的一些简单示例

    C# List中FindAll用法的一些简单示例

    本篇文章只要是对C# List中FindAll用法的一些简单示例进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-01-01
  • 详解C#中线程传参,返回值和多线程冲突问题的解决

    详解C#中线程传参,返回值和多线程冲突问题的解决

    这篇文章主要为大家详细介绍了C#中线程传参,返回值和多线程冲突问题的解决方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2022-11-11
  • Unity实现弹球打砖块游戏

    Unity实现弹球打砖块游戏

    这篇文章主要为大家详细介绍了Unity实现弹球打砖块游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • 深入学习C#多线程

    深入学习C#多线程

    本文详细讲解了C#多线程编程的相关技术,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • C#编程实现查看剪切板内容的方法

    C#编程实现查看剪切板内容的方法

    这篇文章主要介绍了C#编程实现查看剪切板内容的方法,涉及C#针对剪切板操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-11-11
  • c#中LINQ的基本用法(三)

    c#中LINQ的基本用法(三)

    这篇文章介绍了c#中LINQ的基本用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下的相关资料
    2022-04-04
  • C#如何连接使用Zookeeper

    C#如何连接使用Zookeeper

    Zookeeper作为分布式的服务框架,虽然是java写的,但是强大的C#也可以连接使用。而现在主要有两个插件可供使用,分别是ZooKeeperNetEx和Zookeeper.Net,个人推荐使用ZooKeeperNetEx做开发,本文也已介绍ZooKeeperNetEx为主
    2021-06-06
  • C#的WebBrowser操作frame实例解析

    C#的WebBrowser操作frame实例解析

    这篇文章主要介绍了C#的WebBrowser操作frame实例解析,很适合C#初学者参考借鉴,需要的朋友可以参考下
    2014-08-08
  • 基于多态之虚方法、抽象类、接口详解

    基于多态之虚方法、抽象类、接口详解

    下面小编就为大家分享一篇基于多态之虚方法、抽象类、接口详解,具有很好的参考价值。希望对大家有所帮助。一起跟随小编过来看看吧
    2017-11-11
  • C# .NET 中的缓存实现详情

    C# .NET 中的缓存实现详情

    软件开发中最常用的模式之一是 缓存 ,其包括进程内缓存、持久性进程内缓存和分布式缓存,本文我们将主要介绍进程内缓存,需要的朋友可以参考下面文章的具体内容
    2021-09-09

最新评论