golang笔记14--go 语言爬虫实战项目介绍

  • 1 介绍
  • 2 开始实战项目
    • 2.1 爬虫项目介绍
    • 2.2 爬虫的法律风险
    • 2.3 新爬虫的选择
    • 2.4 总体算法
  • 3 注意事项
  • 4 说明

1 介绍

本文继上文 golang笔记13–go语言 http 及其它标准库, 进一步了解 go 语言爬虫实战项目介绍,以及相应注意事项。
具体包括: 爬虫项目介绍、爬虫的法律风险、新爬虫的选择、总体算法 等内容。

2 开始实战项目

2.1 爬虫项目介绍

  1. 选择爬虫项目原因
    1)有一定的复杂性;
    2)可以灵活调整项目的复杂性;
    3)需要平衡语言 | 爬虫之间的比重;

  2. 网络爬虫分类
    1)通用爬虫,例如百度、Google,它们会搜索互联网上的所有数据并保存下来,搜搜的时候直接从存储的备份里面找到目标内容,然后再访问实际网站内容;
    2)聚焦爬虫,从互联网获取结构话数据,不保存所有数据,只根据一些需要提取需要的数据;

  3. go 语言常见爬虫库 | 框架

    • henrylee2cn/pholcus
        Pholcus(幽灵蛛)是一款纯 Go 语言编写的支持分布式的高并发爬虫软件,仅用于编程学习与研究。
        它支持单机、服务端、客户端三种运行模式,拥有Web、GUI、命令行三种操作界面;规则简单灵活、批量任务并发、输出方式丰富(mysql/mongodb/kafka/csv/excel等);另外它还支持横纵向两种抓取模式,支持模拟登录和任务暂停、取消等一系列高级功能。
    • gocrawl
      gocrawl是一个采用Go编写的微型并发Web爬虫。
    • colly
        Lightning Fast and Elegant Scraping Framework for Gophers.
        Colly provides a clean interface to write any kind of crawler/scraper/spider.
        With Colly you can easily extract structured data from websites, which can be used for a wide range of applications, like data mining, data processing or archiving.
    • hu17889/go_spider
        go_spider 基于golang开发,是一个开放的垂直领域的爬虫框架,框架中将各个功能模块区分开,方便使用者重新实现子模块,进而构建自己垂直方方向的爬虫。
  4. 项目总体结构
    1)选择目标网络资源,如珍爱网、爱卡网;
    2)完成分布式爬虫模块;
    3)存储到指定数据库中;
    4)提供简单的前端展示;
    本项目为了提高go语言熟练度,不使用现有爬虫库,全部手写;使用ElasticSearch 作为数据存储;使用go语言标准模板库实现 http 数据展示部分;

2.2 爬虫的法律风险

  1. robots 协议
    一般网站都会增加一个robots.txt 来说明可以爬、不可爬以及不愿意被爬的内容。
  2. 技术上:没有约束力
    如果需要禁止某个agent访问,则需要在安全程序层面加以监测和阻止。
  3. 法律上:作为参考
    一方面,robots 上不允许爬虫的,一般最好不要爬,以防影响网站的正常业务(可能存在法律风险);
    另一方面,robots协议默认允许所有项;
    除此之外,网站所有者可能没有关注或者写错 robots.txt 相关的信息;
    因此需要根据常识判断,不能随意爬、无限速爬(QPS 不能影响对方正常服务),若不确定时候可以咨询相关人士或者联系网站管理人员(有些爬虫数据是有利于你网站方的)。

  以下为 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: 1User-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=cmssitemap: http://www.xcar.com.cn/sitemap.xml

2.3 新爬虫的选择

爬取网站类别:比较廉价的数据,访问量大的网站;
参考数据类别:金融、体育、新闻、产品等类别的数据;

本项目:
1)爬取爱卡汽车各车型数据;
2)项目的设计使得我们只需要增量修改;
3)新的解析器,新的配置;

通过本项目可以学习模块化、任务管理、调度、分布式搭建、接口、函数式编程等各类 golang 基础知识。

2.4 总体算法

想让程序获取数据信息,那么必须先尝试人工获取信息,然后设置指定爬虫起始爬虫位置,再根据规则爬取需要的数据,根据链接爬取更多的数据。
本案例通过查看 珍爱网 和 世纪佳缘网 ,发现可以从 珍爱网-征婚 页面可以找到所有城市信息,并且能在不登录的情况下查看对应的用户数据(当然少量操作需要登录状态下才能获取);因此,本案例爬取珍爱网数据。

算法说明:
本案例中 爬虫总体算法 和 爬虫实现步骤如下图所示:
算法层面,从城市列表 获取子城市数据,然后进一步获取用户数据,并且根据用户能进一步获取推荐用户数据;
实现步骤层面,从单任务版升级到并发版本,再进一步优化为分布式版本;

爬虫总体算法


爬虫实现步骤

3 注意事项

待添加

4 说明

  1. 软件环境
    go版本:go1.15.8
    操作系统:Ubuntu 20.04 Desktop
    Idea:2020.01.04
  2. 参考文档
    由浅入深掌握Go语言 --慕课网
    经典爬虫框架-henrylee2cn/pholcus
    经典爬虫框架-gocrawl
    经典爬虫框架-colly
    经典爬虫框架-hu17889/go_spider

golang笔记14--go 语言爬虫实战项目介绍相关推荐

  1. python爬虫项目-32个Python爬虫实战项目,满足你的项目慌

    原标题:32个Python爬虫实战项目,满足你的项目慌 爬虫项目名称及简介 一些项目名称涉及企业名词,小编用拼写代替 1.[WechatSogou]- weixin公众号爬虫.基于weixin公众号爬 ...

  2. 10个Python爬虫实战项目

    Python爬虫是指使用Python语言编写程序,自动化地从互联网上获取数据并进行处理和分析的技术.Python爬虫是一项复杂而且实用的技术,需要掌握多个方面的基础知识,并具备较强的编程能力和实际操作 ...

  3. Python网络爬虫实战项目代码大全(长期更新,欢迎补充)

    Python网络爬虫实战项目代码大全(长期更新,欢迎补充) 阿橙 · 1 个月内 WechatSogou [1]- 微信公众号爬虫.基于搜狗微信搜索的微信公众号爬虫接口,可以扩展成基于搜狗搜索的爬虫, ...

  4. 数据挖掘r语言和python知乎_Hellobi Live |R语言爬虫实战案例分享:网易云课堂、知乎live、今日头条、B站视频...

    课程名称 R语言爬虫实战案例分享:网易云课堂.知乎live.今日头条.B站视频 网络数据抓取是数据科学中获取数据中的重要途径,但是一直以来受制于高门槛,都是专业程序员的专属技能.直到R语言和Pytho ...

  5. python常用代码大全-Python 网络爬虫实战项目代码大全

    原标题:Python 网络爬虫实战项目代码大全 DouBanSpider 豆瓣读书的爬虫.你可以爬豆瓣读书下面标签下的所有图书,按评分排名依次存储,存储到Excel中,可方便大家筛选搜罗,比如筛选评价 ...

  6. java爬虫教程 百度云_java视频教程java爬虫实战项目httpclient hbase springmvc solr

    资源内容: java视频教程java爬虫实战项目httpclient hbase springmvc solr|____猫了个咪-更多IT精品课程.html|____猫了个咪--it视频论坛.url| ...

  7. 第14.16节 爬虫实战2:赠人玫瑰,手留余香! request+BeautifulSoup实现csdn博文自动点赞

    写在前面:本文仅供参考学习,请勿用作它途,禁止转载! 在<第14.14节 爬虫实战准备:csdn博文点赞过程http请求和响应信息分析>老猿分析了csdn博文点赞处理的http请求和响应报 ...

  8. 28个精品Python爬虫实战项目

    先来说说Python的优势!然后给大家看下这28个实战项目的实用性! Python跟其他语言相比,有以下优点: 1. 简单 Python是所有编程语言里面,代码量最低,非常易于读写,遇到问题时,程序员 ...

  9. python爬虫文件代码大全-Python网络爬虫实战项目代码大全(长期更新,欢迎补充)...

    WechatSogou[1]- 微信公众号爬虫.基于搜狗微信搜索的微信公众号爬虫接口,可以扩展成基于搜狗搜索的爬虫,返回结果是列表,每一项均是公众号具体信息字典.[1]: https://github ...

  10. python代码大全p-Python网络爬虫实战项目代码大全(长期更新,欢迎补充)

    WechatSogou[1]- 微信公众号爬虫.基于搜狗微信搜索的微信公众号爬虫接口,可以扩展成基于搜狗搜索的爬虫,返回结果是列表,每一项均是公众号具体信息字典.[1]: https://github ...

最新文章

  1. J - Invitation Cards POJ - 1511
  2. 2021未来科学大奖揭晓:SARS病原发现者、上海交大张杰教授等4人获得百万奖金...
  3. 快速排序(quicksort)算法实现
  4. apache-2.4.12之虚拟主机配置问题与觖决办法
  5. 同步vmware虚拟机与宿主机的时间
  6. MTK tee.img的打包原理介绍
  7. Angular单元测试ComponentFixture的实例化过程明细
  8. [html] 说说你对<meta>标签的理解
  9. Serena Dimensions 介绍
  10. linux 基础知识学习(六)
  11. centos7安装python3.8_centos7 安装python3.8
  12. dubbo分布式事务解决方案_阿里架构师谈:高并发+分布式+秒杀+微服务+性能优化...
  13. 感觉百度输入法好于搜狗输入法
  14. Opencv 形态学操作 灰度、滤波、膨胀腐蚀、开闭运算、梯度-python代码
  15. 0x00000....蓝屏
  16. 论文数据统计Task1
  17. Linux系统运维与架构设计之Linux概述
  18. 2021年陕西柿子种植现状及出口情况分析:出口量下滑明显[图]
  19. 修改32位的AutoCAD2012,使其能在64位系统上安装
  20. 常微分方程数值解matlab欧拉,MATLAB题,用到欧拉公式求微分方程的数值解

热门文章

  1. 【转】IE内嵌google chrome frame解决浏览器兼容问题
  2. Skype国际版下载方法
  3. nurbs曲线拟合程序_NURBS曲线DeBoor算法(Grasshopper数学插件)
  4. WPF笔记汇总之ListView控件
  5. MySQL随机函数的运用场景示例总结
  6. java scjp 试题_JAVA认证:78道SCJP考试试题精解
  7. java numberformat_NumberFormat(数字格式化类)
  8. php格式怎么转换为pdf,PHP如何将将word文件转为pdf
  9. java毕业设计springboot框架 java在线视频点播系统毕业设计开题报告功能参考
  10. 战神引擎php,战神引擎搭建教程