分享
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。
> 本文介绍爬虫相关流程和搭建
### 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)
项目可能优化,可以根据提交记录查看
有疑问加站长微信联系(非本文作者))
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信1479 次点击
被以下专栏收入,发现更多相似内容
上一篇:go utf-8转其他编码
下一篇:【巴比伦周报】2019第6周
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传