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

golang笔记14-go语言爬虫实战项目介绍1介绍2开始实战项目2.1爬虫项目介绍2.2爬虫的法律风险(14:28)2.3新爬虫的选择(13:45)2.4总体算法(16:03)2.5模拟相亲网站上线啦!3注意事项4说明1介绍本文继上文golang笔记13–go语言http及其它标准库,进一步了解go语言爬虫实战项目介绍,以及相应注意事项。具体包括:爬虫项目介绍、爬虫的法律风险、新爬虫的选择、总体算法、拟相亲网站上线等内容。2开始实战项目2.1爬虫

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: 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 

2.3 新爬虫的选择

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

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

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

2.4 总体算法

想让程序获取数据信息,那么必须先尝试人工获取信息,然后设置指定爬虫起始爬虫位置,再根据规则爬取需要的数据,根据链接爬取更多的数据。
本案例通过查看 珍爱网世纪佳缘网 ,发现可以从 珍爱网-征婚 页面可以找到所有城市信息,并且能在不登录的情况下查看对应的用户数据(当然少量操作需要登录状态下才能获取);因此,本案例爬取珍爱网数据。
在这里插入图片描述
算法说明:
本案例中 爬虫总体算法 和 爬虫实现步骤如下图所示:
算法层面,从城市列表 获取子城市数据,然后进一步获取用户数据,并且根据用户能进一步获取推荐用户数据;
实现步骤层面,从单任务版升级到并发版本,再进一步优化为分布式版本;

爬虫总体算法
golang笔记14--go 语言爬虫实战项目介绍
golang笔记14--go 语言爬虫实战项目介绍
爬虫实现步骤
golang笔记14--go 语言爬虫实战项目介绍

3 注意事项

待添加

4 说明

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

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/4637.html

(0)
上一篇 2022-12-08 13:13
下一篇 2022-12-08 17:42

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信