手摸手教你用go写爬虫之三(单任务版爬虫1.0)

wujiangwei · · 531 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

> 本文介绍爬虫相关流程和搭建 ### 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

531 次点击  
加入收藏 微博
被以下专栏收入,发现更多相似内容
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传