【go语言爬虫】go语言高性能抓取手机号码归属地、所属运营商

本文主要是介绍【go语言爬虫】go语言高性能抓取手机号码归属地、所属运营商,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、需求分析
根据手机号码获取手机号码的归属地和所属运营商类型
类似:四川 18683339513 乐山 614000 0833 中国联通

二、运行效果
这里写图片描述

这里写图片描述

三、实现源代码

package main//网址:https://github.com/M2shad0w/phone-go//安装包:go get github.com/M2shad0w/phone-goimport ("fmt""github.com/M2shad0w/phone-go""os""github.com/axgle/mahonia""encoding/csv""io""time")func init() {if err := m2phone.Init("C://phone.dat"); err != nil {panic(err)}
}func mobile_spider() {file, err := os.Open("C://mobile_order//m.txt")if err != nil {fmt.Println("Error:", err)return}decoder := mahonia.NewDecoder("gbk")defer file.Close()//创建excel文件f, err := os.Create("C:/haha3.xlsx")if err != nil {panic(err)}defer f.Close()reader := csv.NewReader(decoder.NewReader(file))var type1 stringfor {record, err := reader.Read()if err == io.EOF {break} else if err != nil {fmt.Println("Error:", err)return}phonestr := record[0]ph, err := m2phone.Find(phonestr)if err != nil {fmt.Println("err:", err)return}switch ph.Phonetype {case 1:type1 ="中国移动"case 2:type1 ="中国联通"case 3:type1 ="中国电信"}fmt.Println(ph.Province, phonestr, ph.City, ph.Zipcode, ph.Areacode, type1)// 写入UTF-8 BOMf.WriteString("\xEF\xBB\xBF")f.WriteString(phonestr + "\t" + string(ph.Province) + "\t" + string(ph.City) + "\t" + string(ph.Zipcode) + "\t" + string(ph.Areacode) + "\t" + string(type1) + "\n")}}func main() {t1 := time.Now() // get current timemobile_spider()elapsed := time.Since(t1)fmt.Println("爬虫结束,总共耗时: ", elapsed)}

这篇关于【go语言爬虫】go语言高性能抓取手机号码归属地、所属运营商的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1144470

相关文章

Python实现批量CSV转Excel的高性能处理方案

《Python实现批量CSV转Excel的高性能处理方案》在日常办公中,我们经常需要将CSV格式的数据转换为Excel文件,本文将介绍一个基于Python的高性能解决方案,感兴趣的小伙伴可以跟随小编一... 目录一、场景需求二、技术方案三、核心代码四、批量处理方案五、性能优化六、使用示例完整代码七、小结一、

C# LiteDB处理时间序列数据的高性能解决方案

《C#LiteDB处理时间序列数据的高性能解决方案》LiteDB作为.NET生态下的轻量级嵌入式NoSQL数据库,一直是时间序列处理的优选方案,本文将为大家大家简单介绍一下LiteDB处理时间序列数... 目录为什么选择LiteDB处理时间序列数据第一章:LiteDB时间序列数据模型设计1.1 核心设计原则

GO语言短变量声明的实现示例

《GO语言短变量声明的实现示例》在Go语言中,短变量声明是一种简洁的变量声明方式,使用:=运算符,可以自动推断变量类型,下面就来具体介绍一下如何使用,感兴趣的可以了解一下... 目录基本语法功能特点与var的区别适用场景注意事项基本语法variableName := value功能特点1、自动类型推

GO语言中函数命名返回值的使用

《GO语言中函数命名返回值的使用》在Go语言中,函数可以为其返回值指定名称,这被称为命名返回值或命名返回参数,这种特性可以使代码更清晰,特别是在返回多个值时,感兴趣的可以了解一下... 目录基本语法函数命名返回特点代码示例命名特点基本语法func functionName(parameters) (nam

Go之errors.New和fmt.Errorf 的区别小结

《Go之errors.New和fmt.Errorf的区别小结》本文主要介绍了Go之errors.New和fmt.Errorf的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考... 目录error的基本用法1. 获取错误信息2. 在条件判断中使用基本区别1.函数签名2.使用场景详细对

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

Go中select多路复用的实现示例

《Go中select多路复用的实现示例》Go的select用于多通道通信,实现多路复用,支持随机选择、超时控制及非阻塞操作,建议合理使用以避免协程泄漏和死循环,感兴趣的可以了解一下... 目录一、什么是select基本语法:二、select 使用示例示例1:监听多个通道输入三、select的特性四、使用se

Go语言使用Gin处理路由参数和查询参数

《Go语言使用Gin处理路由参数和查询参数》在WebAPI开发中,处理路由参数(PathParameter)和查询参数(QueryParameter)是非常常见的需求,下面我们就来看看Go语言... 目录一、路由参数 vs 查询参数二、Gin 获取路由参数和查询参数三、示例代码四、运行与测试1. 测试编程路

Go语言使用net/http构建一个RESTful API的示例代码

《Go语言使用net/http构建一个RESTfulAPI的示例代码》Go的标准库net/http提供了构建Web服务所需的强大功能,虽然众多第三方框架(如Gin、Echo)已经封装了很多功能,但... 目录引言一、什么是 RESTful API?二、实战目标:用户信息管理 API三、代码实现1. 用户数据

Spring Security重写AuthenticationManager实现账号密码登录或者手机号码登录

《SpringSecurity重写AuthenticationManager实现账号密码登录或者手机号码登录》本文主要介绍了SpringSecurity重写AuthenticationManage... 目录一、创建自定义认证提供者CustomAuthenticationProvider二、创建认证业务Us