VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > 简明python教程 >
  • 亲手撸码,爬取 手机号码归属地最新数据(201911)

某天,某部门负责人小姐姐:要在订单中识别收货人手机号码归属地,这样可以参考判断该客户是否为恶意下单。
搬砖君:可以,有两种方案;
    一、网上买个API接口(需要RMB支持);
    二、找个手机归属地库(免费,有可能不是最新);
小姐姐:申请RMB,估计领导不会签字,那就免费的吧。
搬砖君:好吧,(此时心中一万个。。。(你们懂的));

 

 

 

于是某度搜索 手机号码归属地最新数据库 排名第一的居然是园子里的高手,瞬间兴奋起来,

 

 


打开链接看到 github ,心想这下不要去撸码找数据了。结果翻遍每个文件夹只有查询方法,却没有库。
再往下看原来库是有 购买 链接,还有升级链接。看来这路走不通了。

 

 

再翻了下某度的其它搜索结果,要么不最新,要么收费,要么就是登录需要积分下载。
心想去找个API接口把他的数据撸出来就好了。 继续某度 手机号码归属地查询API接口 ,
经过测试,比对,找了4个可用而且可信度比较高的。

 

 

 

开始撸码【抱歉,数据源和数据入库 画面请各位小伙伴自行脑补】:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
private static List<string> MobileList = new List<string>();
// 中途中断后, 已经存在的手机号段列表
using (SqlConnection conn = new SqlConnection(ConStr))
{
    if (MobileList.Count == 0)
    {
        string temp_sql = $"SELECT [Mobile] From [App_Mobile_20191113]";
        using (SqlCommand command = new SqlCommand(temp_sql, conn))
        {
            command.CommandType = System.Data.CommandType.Text;
            if (conn.State == ConnectionState.Closed) conn.Open();
            using (SqlDataReader dreader = command.ExecuteReader())
            {
                while (dreader.Read())
                {
                    MobileList.Add(dreader[0].ToString());
                }
            }
        }
    }
}

一个号码段前三位一个线程

1
2
3
4
5
6
7
8
9
10
11
12
13
List<Task> taskList = new List<Task>();
TaskFactory taskFactory = new TaskFactory();
// 从手机前3位 130 开始 至 199 结束
for (int i = 130; i < 200; i++)
{
    int mobile_no = i;
    taskList.Add(taskFactory.StartNew(() =>
    {
        Console.WriteLine($"{mobile_no} = {Thread.CurrentThread.ManagedThreadId}");
        Get(mobile_no);
    }));
}
Task.WaitAll(taskList.ToArray());

相关教程