手摸手教你用go寫爬蟲之三(單任務版爬蟲1.0)
本文介紹爬蟲相關流程和搭建
1. 專案需求
我們的需求分三步:
- 從租房網站上獲取到杭州市的所有區的連結和名稱
- 根據每個區的連結抓取第一頁列表內容,找到房屋的連結和名稱
- 根據第2步中獲取的連結,抓取對應的房屋的具體資訊
2. 專案流程
step 1 從專案需求中可以分解出倆個資訊 三步中均需要抓取 那麼就要提供 url 三步中均需要解析 那麼需要提供解析函式 func
每一步解析到的結果我們需要暫存下來,如果含有連結需要繼續抓取 這裡我們抽象出兩個結構體
//請求結構體 type Request struct { Url string ParserFunc func(string) RequestResult } //結果解析結構體 type RequestResult struct { r []Request Items interface{} }
step2 然後我們需要解析三個地方
. 獲取杭州市的所有區域頁面
func ParseArea(contents string)([]string){}
. 獲取區域中第一頁列表的頁面
func ParseList(contents string)([]string,error){}
. 獲取房屋詳情的頁面
func ParseHouse(contents string)([]string,error){}
step3 我們最終要儲存的資料是房屋資訊
type House struct { BuildingName string //小區名稱 PayType string// 付3押1 UnitType string // 3室2廳2衛 Area int //面積 Toword string // 朝向 Loft string // 樓層 Decorate string //裝修 HouseType string //型別: 普通住宅 PublicTime string //釋出時間 Price float32 //租金 HouseNo string //房屋編號 }
據此,我們得到一個簡版的資料流程圖和檔案結構圖

github地址: house_spider 專案可能優化,可以根據提交記錄檢視