Google资深工程师深度讲解Go语言-单任务版爬虫(十四)「建议收藏」

Google资深工程师深度讲解Go语言-单任务版爬虫(十四)

大家好,又见面了,我是全栈君。

一.获得初始页面内容

gopm get -g -v golang.org/x/text  //引入gbk库

报错: bash: gopm: command not found
解决方法: 使用gopm 完成安装

gopm–Go Package Manager 的缩写。是go 上的包管理工具,十分好用。 gopm

1.gopm 安装:

这个十分简单只需一条命令就可以了:

go get -u github.com/gpmgo/gopm  //亲测可用

2.使用 gopm安装需要的包

gopm 具有丰富的包管理功能,具体的管理命令可以参考官方文档(官方文档有中文版 各位爽不爽)链接
这里只需要一条命令就可以搞定了:

gopm bin -d $GOPATH/bin PackageName

Google资深工程师深度讲解Go语言-单任务版爬虫(十四)「建议收藏」

二.正则表达式获取邮件地址

package main

import (
	"fmt"
	"regexp"
)

const text = `
my email is lxw@qq.com
email2 is aa@def.com
email3 is bb@eft.com.cn
`

func main() {
	re := regexp.MustCompile(`([a-zA-Z0-9]+)@([a-zA-Z0-9]+)(\.[a-zA-Z0-9]+)`)
	match := re.FindAllStringSubmatch(text, -1)
	for _, m := range match {
		fmt.Println(m)
	}
}

2.提取城市和url

package main

import (
	"fmt"
	"io/ioutil"
	"net/http"
	"regexp"
)

func main() {
	resp, err := http.Get("http://www.zhenai.com/zhenghun")
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()
	if resp.StatusCode != http.StatusOK {
		fmt.Println("Error:status code", resp.StatusCode)
		return
	}
	all, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		panic(err)
	}
	//fmt.Printf("%s\n", all)
	printCityList(all)
}

func printCityList(contents []byte){
	re:=regexp.MustCompile(`<a href="(http://www.zhenai.com/zhenghun/[a-z0-9]+)"[^>]*>([^<]+)</a>`)
	match:=re.FindAllSubmatch(contents,-1)
	for _,m :=range match {
		//for _,sub:=range m {
		//	fmt.Printf("%s",sub)
		//}
		//fmt.Println()
		fmt.Printf("city: %s,  Url:%s \n",m[2],m[1])
	}

	fmt.Printf("matches found:%d\n",len(match))
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/111684.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 具有指令流水线结构的cpu_流水线结构在CPU中的运用是一种

    具有指令流水线结构的cpu_流水线结构在CPU中的运用是一种为什么小小一个CPU,有那么多周期(Cycle)?程序的性能,是由三个因素相乘来衡量的,“指令数×CPI×时钟周期”。和周期相关的只有一个时钟周期,即CPU主频的倒数。一个CPU的时钟周期可以认为是可以完成一条最简单的计算机指令的时间。那为何构造CPU时,有那么多周期?单指令周期处理器一条CPU指令的执行,由FDE三步组成。这个执行过程,至少需花费一个时钟周期。因为在取指令的时候,我们需要通过时钟周期的信号,来决定计数器的自增。很自然,我们希望能确保让这样一整条指令的执行,在一个时钟周期内完成

  • stack overflow at line 错误原因及解决

    stack overflow at line 错误原因及解决错误表现:按关闭窗口按钮时,弹出对话框:stackoverflowatline87 .那个按键的onclick=”window.close()”                     很简单的代码,不知道为什么总是出错,后来找了一下,发现原因是:我的代码为:”JavaScript”>function close(){    windo

  • 深圳有哪些不错的互联网公司_深圳好公司推荐

    深圳有哪些不错的互联网公司_深圳好公司推荐深圳作为一个一线城市,改革开放已经40余年了,即使如此,栈长觉得深圳现在也还是一个非常年轻的城市,不断吸引着大批外省务工人员。深圳不仅是一个包容度很高的城市,也是一个互联网公司扎堆的城市,今天栈

  • python open函数参数_python中open函数的使用

    python open函数参数_python中open函数的使用一、open()的函数原型open(file,mode=‘r’,buffering=-1,encoding=None,errors=None,newline=None,closefd=True)从官方文档中我们可以看到open函数有很多的参数,我们常用的是file,mode和encoding,对于其它的几个参数,平时不常用,也简单介绍一下。buffering的可取值有0,1,>1三个…

  • 写给 python 程序员的 OpenGL 教程

    OpenGL是OpenGraphicsLibrary的简写,意为“开放式图形库”,是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口(API)。OpenGL不是一个独立的平台,因此,它需要借助于一种编程语言才能被使用。C/C++/python/java都可以很好支持OpengGL,我当然习惯性选择python语言。如果读者是python程序员,并且了解numpy,接下来的阅读应该不会有任何障碍;否则,我建议先花半小时学习一下python语言。

  • IntelliJ IDEA 常用设置(配置)吐血整理。首次安装必需「建议收藏」

    idea很强大,但很多设置并不是满足,经常一安装就要捣鼓很久,为此吐血整理初始化设置:切换主题、忽略大小写、自定义注释、自定义代码颜色、滚轮调节字体、鼠标悬停提示、打开当前文件目录、添加双引号

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号