Go语言爬虫项目将结果写入MySql数据库

来源于Google资深工程师深度讲解Go语言

package mainimport ("fmt""io/ioutil""net/http"
)const url = "http://www.zhenai.com/zhenghun"func main() {//发送get请求resp, err := http.Get(url)if err != nil {panic(err)}//关闭通道defer resp.Body.Close()//判断状态if resp.StatusCode != http.StatusOK {fmt.Errorf("StatusCode:%v \n", http.StatusOK)}//输出结果all, err := ioutil.ReadAll(resp.Body)if err != nil {fmt.Errorf("ReadAll: %s ", err)}fmt.Printf("%s\n",all)
}

可以将整个html页面爬取下来

正则表达式处理

package mainimport ("fmt""io/ioutil""net/http""regexp"
)//const url = "http://www.baidu.com"
const url = "http://www.zhenai.com/zhenghun"func main() {//发送get请求resp, err := http.Get(url)if err != nil {panic(err)}//关闭通道defer resp.Body.Close()//判断状态if resp.StatusCode != http.StatusOK {fmt.Errorf("StatusCode:%v \n", http.StatusOK)}//输出结果all, err := ioutil.ReadAll(resp.Body)if err != nil {fmt.Errorf("ReadAll: %s ", err)}printListCity(all)
}// 获取城市,url
const cityListRe = `<a href="(http://www.zhenai.com/zhenghun/[0-9a-z]+)"[^>]*>([^<]*)</a>`func printListCity(contents []byte) {rg := regexp.MustCompile(cityListRe)allSubmatch := rg.FindAllSubmatch(contents, -1)for _, m := range allSubmatch {fmt.Printf("%s\n ", m[1])fmt.Printf("%s\n ", m[2])}
}

结果

 http://www.zhenai.com/zhenghun/zhuhai珠海http://www.zhenai.com/zhenghun/zhumadian驻马店http://www.zhenai.com/zhenghun/zhuzhou株洲http://www.zhenai.com/zhenghun/zibo淄博http://www.zhenai.com/zhenghun/zigong自贡http://www.zhenai.com/zhenghun/ziyang1资阳http://www.zhenai.com/zhenghun/zunyi遵义

将结果存入数据库

  • 注意的是id为自增长的主键,不参与golang语言的表结构展示,特别是在插入时,不应该算入在内
const cityListRe = `<a href="(http://www.zhenai.com/zhenghun/[0-9a-z]+)"[^>]*>([^<]*)</a>`func mySql(contents []byte) {//用户名:密码^@tcp(地址:3306)/数据库db, err := sql.Open("mysql", "root:Kou123$%^@tcp(39.107.87.114:3306)/zhenai?charset=utf8")if err!=nil {fmt.Println(err)return}//表结构type info struct {city string `db:"city"`url string `db:"url"`}//查询表rows,err:=db.Query("SELECT * FROM city_url_id")//遍历打印for rows.Next(){var s infoerr=rows.Scan(&s.city,&s.url,)}//执行MySql语句rg := regexp.MustCompile(cityListRe)allSubmatch := rg.FindAllSubmatch(contents, -1)for _, m := range allSubmatch {//fmt.Printf("%s\n ", m[1])//fmt.Printf("%s\n ", m[2])//插入语句db.Exec("INSERT INTO city_url_id(city,url)VALUES (?,?)",  m[1], m[2])}rows.Close()
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/382420.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

go语言学习路径

个人记录 go语言如何连接数据库&#xff1a;增删改查 Go语言爬虫项目将结果写入MySql数据库 go语言急速入门

在windows上使用go编译dll文件,供C++调用

C项目是win32的&#xff0c;所以go的编译环境也要改成win32的 cmd下&#xff0c;修改环境变量&#xff1a; set GOARCH386 set CGO_ENABLED1 使用go env 查看是否生效参考&#xff1a;https://bbs.csdn.net/topics/394513992. 2. 安装编译环境 MinGW下载安装gcc,g编译器 参考&…

go语言急速入门

Go 语言极速入门1 - 环境搭建与最简姿势 Go 语言极速入门2 - 基础语法 Go 语言极速入门3 - 内建容器 Go 语言极速入门4 - 面向对象 Go 语言极速入门5 - 面向接口 Go 语言极速入门6 - 闭包 Go 语言极速入门7 - 资源管理与错误处理 Go 语言极速入门8 - Goroutine Go 语言极速入门…

windows远程桌面mstsc使用 代理

转自 https://blog.csdn.net/bodybo/article/details/6638005

go语言扫描四位数可用域名

域名注册查询接口(API)的说明 原文出处 域名查询 接口采用HTTP&#xff0c;POST&#xff0c;GET协议&#xff1a; 调用URL&#xff1a;http://panda.www.net.cn/cgi-bin/check.cgi 参数名称&#xff1a;area_domain 值为标准域名&#xff0c;例&#xff1a;hichina.com 调用…

cmake构建工具 初步01

记录下cmake学习过程&#xff0c;以后还会补充 单目录单文件 demo1 目录下只有一个a1.cpp, 如下图 [rootlocalhost demo1]# tree . ├── a1.cpp └── CMakeLists.txt编写CMakeLists.txt 1 CMAKE_MINIMUM_REQUIRED(VERSION 2.8.12)2 3 PROJECT(demo1)4 5 ADD_EXECUTABLE(d…

Mysql5.7后的password加密和md5

5.7之后 password函数旧版16位&#xff0c;新版41位&#xff0c;可用select password(‘123456’)查看。md5加密算法&#xff0c;只有16位和32位两种 authentication_string 且5.7之后移除了password&#xff0c;它采用了新的算法 5.7之前 mysql> select user,host,pas…

用python写的简单的http文件服务器demo

import socket import os import re import time from multiprocessing import Processclass CHttpServer(object):"""Httpserver服务端类"""def __init__(self):self.m_serverSocket socket.socket(socket.AF_INET,socket.SOCK_STREAM)self.m_…

从《四驱兄弟》到“联想中国”

《四驱兄弟》 小学的时候看过一个日本的动画片叫四驱兄弟&#xff0c;里面就是一群小朋友代表国家各种比赛&#xff0c;其中让我象比较深刻的是他把美国队描述的非常邪恶&#xff0c;各种破坏别人的车子&#xff0c;通过卑鄙手段取得胜利。然后最后好像是正义战胜邪恶的剧情还…

Mac SecureCRT解决中文乱码

下载地址 https://xclient.info/s/navicat-premium.html#versions SecureCRT解决中文乱码问题 在设置中设置为utf-8之后&#xff0c;还需要 $ sudo vi /etc/profile $打开文件&#xff0c;最后一行添加export LANGzh_CN.UTF-8

音视频之使用sonic.cpp实现音频倍速播放功能

sonic.cpp 是一个音频处理库&#xff0c;可以实现倍速播放。 如果单纯通过修改pcm的采样率来实现音频倍速播放的话&#xff0c;就会出现声音变调的情况。 以下是通过采集windows 虚拟声卡获取到的音频数据&#xff0c; 我的声卡采样率是44100次/秒&#xff0c;audio_buffer_si…

SecurtCRT连接服务器自动断开

mac Terminal-->Anti-idle-->send protocol NO-OP 60勾中

位图原理、代码实现及应用实例

位图的原理&#xff1a; 在位图中采用比特位表示对应的元素存在或者不存在 0&#xff1a;不存在 1&#xff1a;存在例如一个int整数有32个比特位可以表示0-31个整数。 再举一个例子 存入的数字为8988 首先&#xff1a; 8988/32 280 其次&#xff1a; 8988%32 28 再来一个例…

通过修改注册表,实现网页链接中的私有协议启用本地exe进程

私有协议为 coffeeclass://xxxxxx.mp4 注册表如下 Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\coffeeclass] "coffeeClass Protocol" "URL Protocol"""[HKEY_CLASSES_ROOT\coffeeclass\DefaultIcon] "D:\\Program Files (x…

布隆过滤器的原理、应用场景和源码分析实现

原理 布隆过滤器数据结构 布隆过滤器是一个 bit 向量或者说 bit 数组&#xff0c;长这样&#xff1a; 如果我们要映射一个值到布隆过滤器中&#xff0c;我们需要使用多个不同的哈希函数生成多个哈希值&#xff0c;并对每个生成的哈希值指向的 bit 位置 1。 例如针对值 “baid…

判断一个数字是否存在于某一个数据之中

哈希表 这个没啥说的&#xff0c;后面补充 位图 https://blog.csdn.net/csdn_kou/article/details/95337121 布隆过滤器 哈希表位图 https://blog.csdn.net/csdn_kou/article/details/95371085

根据语句自动生成正则表达式

自动生成 http://www.txt2re.com 速查手册 https://www.jb51.net/shouce/jquery/regexp.html

免密登录堡垒机和服务器

免密登录堡垒机 安装oathtool和sshpass 这两个文件安装比较耗费时间&#xff01; brew install oath-toolkit brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb免密登录堡垒机 书写shell脚本 #!/usr/bin/env bash …

mysql建表sql

mysql建表 文章目录mysql建表mysql学生表插入数据建表&#xff0c;学生和idgroup byinner joinmysql学生表 CREATE TABLE courses ( id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 自增id, student VARCHAR(255) DEFAULT NULL COMMENT 学生, class VARCHAR(255) DEFAU…