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))
}

 

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

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

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Python常用数据结构之heapq模块建议收藏

    heapq堆是一种特殊的树形结构,通常我们所说的堆的数据结构指的是完全二叉树,并且根节点的值小于等于该节点所有子节点的值常用方法常用方法示例>>>[15,2,50,3

    2021年12月18日
  • APP测试基本流程以及APP测试要点梳理,保证您看了不后悔!

    APP测试基本流程以及APP测试要点梳理,保证您看了不后悔!前言:相信很多刚刚步入测试行业的小伙伴对于APP测试不是很熟悉,这次我为大家提供一篇宝藏文章,希望大家喜欢,谢谢!一、APP测试基本流程1、流程图2、测试周期测试周期可按项目的开发周期来确定测试时间,一般测试时间为两三周(即15个工作日),根据项目情况以及版本质量可适当缩短或延长测试时间。3、测试资源测试任务开始前,检查各项测试资源。–产品功能需求文档;–产品原型图;–产品效果图;–测试设备;–其他。4、日报及产品上线报告(内部报告机制)–测试人员每天需对所测项目发送测试日报。(

    2022年5月5日
  • 数据预处理的一些知识「建议收藏」

    数据预处理的一些知识「建议收藏」数据预处理的一些知识做研究时只要与数据分析相关就避免不了数据预处理。我们常见的预处理包括:标准化(规范化),归一化,零均值(化),白化,正则化……这些预处理的目的是什么呢?网上查的总是零零散散,很难搞清楚。因此我用此片博客来总结下。借鉴其他博客的内容,可能未一一注明还请谅解。一,数据标准化目的:为了消除量纲影响和变量自身数值大小的影响,方便统计处理(尤其是加权),故将数据标准化。例如:我们对

    2022年11月2日
  • spring-cloud_Spring Framework

    spring-cloud_Spring FrameworkOpenFeignOpenFeign是一个声明式web服务调用服务,他使得一切web服务得以简化。我们只需要创建一个接口并用注解和JAX-RS注解的方式来配置它,即可完成对服务提供方的接口绑定。一句话:OpenFeign使得http的调用更加简洁、方便、开发者不需要再关系http调用的逻辑,将开发的中心转移到业务逻辑上来。集成OpenFeign1.pom文件添加jar <dependency><groupId&…

    2022年9月13日
  • docker一键启动、关闭、删除命令

    docker一键启动、关闭、删除命令

    2021年6月2日
  • 卸载vs2012的步骤_plsql卸载详细步骤

    卸载vs2012的步骤_plsql卸载详细步骤要卸载VS系列时才发现卸载VS还是很麻烦的事情,经过研究网上的卸载工具都没什么用,还是要自己手动卸载才彻底些。手动卸载步骤:VisualStudioExpressEditions进入控制面板,运行添加或删除程序 卸载”MSDNLibraryforVisualStudio2005Beta” 卸载”MicrosoftSQLServer2005Expr

    2022年9月23日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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