【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

相关文章

MySQL高性能优化规范

前言:      笔者最近上班途中突然想丰富下自己的数据库优化技能。于是在查阅了多篇文章后,总结出了这篇! 数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名识意,并且最后不要超过32个字符 临时库表必须以tmp_为前缀并以日期为后缀,备份

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

Go Playground 在线编程环境

For all examples in this and the next chapter, we will use Go Playground. Go Playground represents a web service that can run programs written in Go. It can be opened in a web browser using the follow

Python3 BeautifulSoup爬虫 POJ自动提交

POJ 提交代码采用Base64加密方式 import http.cookiejarimport loggingimport urllib.parseimport urllib.requestimport base64from bs4 import BeautifulSoupfrom submitcode import SubmitCodeclass SubmitPoj():de

go基础知识归纳总结

无缓冲的 channel 和有缓冲的 channel 的区别? 在 Go 语言中,channel 是用来在 goroutines 之间传递数据的主要机制。它们有两种类型:无缓冲的 channel 和有缓冲的 channel。 无缓冲的 channel 行为:无缓冲的 channel 是一种同步的通信方式,发送和接收必须同时发生。如果一个 goroutine 试图通过无缓冲 channel

C语言 | Leetcode C语言题解之第393题UTF-8编码验证

题目: 题解: static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num & MASK1) == 0) {return

MiniGPT-3D, 首个高效的3D点云大语言模型,仅需一张RTX3090显卡,训练一天时间,已开源

项目主页:https://tangyuan96.github.io/minigpt_3d_project_page/ 代码:https://github.com/TangYuan96/MiniGPT-3D 论文:https://arxiv.org/pdf/2405.01413 MiniGPT-3D在多个任务上取得了SoTA,被ACM MM2024接收,只拥有47.8M的可训练参数,在一张RTX

如何确定 Go 语言中 HTTP 连接池的最佳参数?

确定 Go 语言中 HTTP 连接池的最佳参数可以通过以下几种方式: 一、分析应用场景和需求 并发请求量: 确定应用程序在特定时间段内可能同时发起的 HTTP 请求数量。如果并发请求量很高,需要设置较大的连接池参数以满足需求。例如,对于一个高并发的 Web 服务,可能同时有数百个请求在处理,此时需要较大的连接池大小。可以通过压力测试工具模拟高并发场景,观察系统在不同并发请求下的性能表现,从而

C语言:柔性数组

数组定义 柔性数组 err int arr[0] = {0}; // ERROR 柔性数组 // 常见struct Test{int len;char arr[1024];} // 柔性数组struct Test{int len;char arr[0];}struct Test *t;t = malloc(sizeof(Test) + 11);strcpy(t->arr,