赞
踩
本文继上文 golang笔记13–go语言 http 及其它标准库, 进一步了解 go 语言爬虫实战项目介绍,以及相应注意事项。
具体包括: 爬虫项目介绍、爬虫的法律风险、新爬虫的选择、总体算法 等内容。
选择爬虫项目原因
1)有一定的复杂性;
2)可以灵活调整项目的复杂性;
3)需要平衡语言 | 爬虫之间的比重;
网络爬虫分类
1)通用爬虫,例如百度、Google,它们会搜索互联网上的所有数据并保存下来,搜搜的时候直接从存储的备份里面找到目标内容,然后再访问实际网站内容;
2)聚焦爬虫,从互联网获取结构话数据,不保存所有数据,只根据一些需要提取需要的数据;
go 语言常见爬虫库 | 框架
项目总体结构
1)选择目标网络资源,如珍爱网、爱卡网;
2)完成分布式爬虫模块;
3)存储到指定数据库中;
4)提供简单的前端展示;
本项目为了提高go语言熟练度,不使用现有爬虫库,全部手写;使用ElasticSearch 作为数据存储;使用go语言标准模板库实现 http 数据展示部分;
以下为 github、zhenai、xcar 等3个常见网站的爬虫约束文档;从文档中可以发现github 有很多子页面都是不希望被爬取的,珍爱网很多 profile下很多操作也是被希望被爬取的。
1) https://github.com/robots.txt # If you would like to crawl GitHub contact us via https://support.github.com/contact/ # We also provide an extensive API: https://developer.github.com/ User-agent: baidu crawl-delay: 1 User-agent: * Disallow: /*/pulse Disallow: /*/tree/ Disallow: /*report-abuse?report=* Disallow: /*tab=* ...... Disallow: /account-login Disallow: /Explodingstuff/ 2) https://www.zhenai.com/robots.txt User-agent: * Disallow: /*?* Disallow: /*jsps* Disallow: /login/* Disallow: /register* Disallow: /profile/addfriend.jsps* Disallow: /profile/getmemberdata11.jsps* Disallow: /profile/getmemberdata.jsps* Disallow: /profile/addfriend.jsps* Disallow: /profile/sendleer.jsps* Disallow: /?fromMemberId=* Disallow: /.asp$ Disallow: /.php$ Disallow: /.action$ Disallow: /plus/ Disallow: /kwsearch/ 3) https://www.xcar.com.cn/robots.txt User-agent: * Disallow: /bbs/admin/ Disallow: /bbs/api/ ...... Disallow: /.js?* Disallow: /.php?type=cms sitemap: http://www.xcar.com.cn/sitemap.xml
爬取网站类别:比较廉价的数据,访问量大的网站;
参考数据类别:金融、体育、新闻、产品等类别的数据;
本项目:
1)爬取爱卡汽车各车型数据;
2)项目的设计使得我们只需要增量修改;
3)新的解析器,新的配置;
通过本项目可以学习模块化、任务管理、调度、分布式搭建、接口、函数式编程等各类 golang 基础知识。
想让程序获取数据信息,那么必须先尝试人工获取信息,然后设置指定爬虫起始爬虫位置,再根据规则爬取需要的数据,根据链接爬取更多的数据。
本案例通过查看 珍爱网 和 世纪佳缘网 ,发现可以从 珍爱网-征婚 页面可以找到所有城市信息,并且能在不登录的情况下查看对应的用户数据(当然少量操作需要登录状态下才能获取);因此,本案例爬取珍爱网数据。
算法说明:
本案例中 爬虫总体算法 和 爬虫实现步骤如下图所示:
算法层面,从城市列表 获取子城市数据,然后进一步获取用户数据,并且根据用户能进一步获取推荐用户数据;
实现步骤层面,从单任务版升级到并发版本,再进一步优化为分布式版本;
爬虫总体算法
爬虫实现步骤
待添加
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。