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.pswp.cn/news/382420.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/382420.shtml
英文地址,請注明出處:http://en.pswp.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…