> 本文介绍爬虫相关流程和搭建
### 1. 项目需求
> 我们的需求分三步:
1. 从租房网站上获取到杭州市的所有区的链接和名称
2. 根据每个区的链接抓取第一页列表内容,找到房屋的链接和名称
3. 根据第2步中获取的链接,抓取对应的房屋的具体信息
### 2. 项目流程
> step 1
从项目需求中可以分解出俩个信息
三步中均需要抓取 那么就要提供 url
三步中均需要解析 那么需要提供解析函数 func
> 每一步解析到的结果我们需要暂存下来,如果含有链接需要继续抓取
这里我们抽象出两个结构体
```go
//请求结构体
type Request struct {
Url string
ParserFunc func(string) RequestResult
}
//结果解析结构体
type RequestResult struct {
r []Request
Items interface{}
}
```
> step2
然后我们需要解析三个地方
. 获取杭州市的所有区域页面
```go
func ParseArea(contents string)([]string){}
```
. 获取区域中第一页列表的页面
```go
func ParseList(contents string)([]string,error){}
```
. 获取房屋详情的页面
```go
func ParseHouse(contents string)([]string,error){}
```
> step3
我们最终要存储的数据是房屋信息
```go
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 //房屋编号
}
```
> 据此,我们得到一个简版的数据流程图和文件结构图
<img src="https://static.studygolang.com/190220/9a6f26e4c1c5e78ef2924f957cc60f48.png" style="width:100%;"/>
> github地址:[house_spider](https://github.com/wujiangweiphp/house_spider/commit/20c334ebe9cef7d83d6a3cb1bd66ae4c8bddbbd7)
项目可能优化,可以根据提交记录查看
有疑问加站长微信联系(非本文作者))
![](https://static.golangjob.cn/static/img/footer.png?imageView2/2/w/280)