在这个到处都充斥着互联网和人工智能的时代,你真的了解它吗?可曾想过你每天都在浏览的网页信息都被无数只网络爬虫监控着?你也可能有听到过这样一个名词,但是你真的了解它吗?


到底什么是网络爬虫?今天大灰狼就来和大家简单的分享一下。

爬虫,即自动化的网页抓取程序,它能从网络中的大量网页里提取出所需的信息。同时它也有一个很特殊而又接地气的名字‘网络蜘蛛’。

网络蜘蛛是通过网页的链接地址来寻找网页。从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止。

如果把整个互联网当成一张紧密的蜘蛛网的话,一个个网站就是这张蜘蛛网的网结,而网站的链接就是这张蜘蛛网的网线,那么网络蜘蛛就可以用这个结点和连接各个结点的网线把互联网上所有的网页都抓取下来。

这样看来,网络蜘蛛就是一个爬行程序,一个抓取网页的程序。

有关网络爬虫的相关技术如下图所示;


因为爬虫系统是从网页中提取内容,所以我们首先需要掌握基本的网页知识,

如HTML 和简单的 JavaScript。浏览器与 Web 服务器之间的通信采用 HTTP 协议,

所以基本的 HTTP 知识也不能少。这些网页相关的基本知识,对于爬虫系统的开发和运营有着至关重要的的作用。

与此同时,爬虫需要模拟浏览器来向 Web 服务器发起请求,以获取网页内容。在这里就可以用到 Python 的标准库 urllib,或者更好用的第三方库 requests 来达到这个目的。

拿到网页内容后,需要同时对网页进行解析,提取出其中的所需要的信息,或该网页上的其它网页链接。这时需要用到 Python 第三方库 Beautiful Soup 或 pyquery。


从网页中提取出来的有用信息,如果数据量不大,那么可以保存在文件中,但通常更通用更专业的做法是保存在数据库中,可以选择关系型数据库 MySQL 或非关系型数据库 MongoBD来存储这些从网页中提取出来的信息。

以上的抓取、解析过程也可以直接用专业的爬虫框架来完成,如 Scrapy,这是一种更工程化的方式。同时对于爬虫系统的开发也相对来说更加的便捷和正式。

我们也知道,网络爬虫是对整个网站中的几乎所有链接进行访问和抓取,在这其中也难免会有很多的重复网页被多次抓取,这样就造成了爬虫系统在运营过程中的效率低下,

所以当待抓取的网页数量很大时,这时需要格外注意网页判重的效率,也就是说需要有一种高效的方式来检查一个网页是否之前被抓取过,这就要用到布隆过滤器了。

Redis 支持布隆过滤器扩展,能方便解决这个问题。并且对抓取的网页有很好的甄别能力。


然而互联网是一个相当庞大的系统网络,当待抓取的网页数量进一步扩大时,单机的爬虫程序效率就十分低下了,这时就需要考虑构建分布式的爬虫程序。也就是说在多台机器上同时来跑爬虫任务。

也可以理解为让多只网络蜘蛛在同一张网上捕食,这时的我们就需要一个分布式队列来统一管理、调度所有的抓取任务,Scrapy-Redis 可以做这件事。

关于以上提到的相关知识和免费课程,大灰狼已经为大家总结好了。直接点击就可以跳转链接。

入门资料;

了解和认识爬虫的最基本架构和运行流程,《Python开发简单爬虫》

关于Scrapy 的基本使用;《Python最火爬虫框架Scrapy入门与实践》

Scrapy 的详细内容可以阅读翻译文档《Scrapy入门教程》

MySQL 数据库入门,免费课程《与MySQL的零距离接触》

MongoDB 数据库入门,参看 W3Cschool 在线教程《MongoDB教程》

至于前面所涉及技术的全面讲解,可以阅读图书《Python3网络爬虫开发实战》
的免费在线版,基本上所有的爬虫相关知识和工具都有覆盖,大灰狼觉得还是值得一读的。

之后大灰狼也会陆续跟大家分享Python在机器学习、自动化运维与测试等方面的资讯。

同时你也可以关注我的微信公众号“灰狼洞主”获取更多Python技术分享和互联网资讯。

觉得有用的记得点赞关注喔,大灰狼期待与你一同进步!

Python一分钟带你探秘不为人知的网络昆虫!(文末获取爬虫福利!)相关推荐

  1. 贝尔实验室创立 90 多年终于出了一本书,带你探秘未来网络

    贝尔实验室 美国贝尔实验室是晶体管.激光器.太阳能电池.发光二极管.数字交换机.通信卫星.电子数字计算机.蜂窝移动通信设备.长途电视传送.仿真语言.有声电影.立体声录音,以及通信网等许多重大发明的诞生 ...

  2. 我用一根网线,制霸了宿舍的网络 !(文末送书)

    文末留言送书5本 在大学时,大家应该都有这样头疼的事情,寝室到了熄灯的时间,而大学室友却还在打游戏(断电但是不断网). 就算声音不外放,那个机械键盘的声音,在夜晚真的噼里啪啦的响,能让你彻夜难眠,转辗 ...

  3. 深入分布式缓存之EVCache探秘开局篇(文末赠书)

    深入分布式缓存 读完需要 15 分钟 速读仅需 5 分钟 云服务不仅为软件系统的开发和部署带来了更多的敏捷性,而且提供了更多创新的可能性.当分布式缓存技术遇到云服务会是怎样的情形呢?EVCache 就 ...

  4. 第四期 | 带学斯坦福CS224n自然语言处理课+带打全球Kaggle比赛(文末重金招募老师!)...

    在未来五年,你认为人工智能领域最具有商业价值的方向是什么? 上个月我和一个算法工程师朋友聊了聊,询问算法岗的行业薪资,他说现在计算机视觉算法岗工程师年薪大约50万左右,正当我感叹如今计算机视觉的火爆时 ...

  5. ICLR 2020关键亮点与发展趋势总结(附python实战分析PyTorch vs Tensorflow使用情况)|文末送书...

    介绍 ICLR是International Conference on Learning Representations的简称,是机器学习和深度学习研究界最著名的会议之一. ICLR 2020最初计划 ...

  6. 使用PaddleFluid和TensorFlow实现图像分类网络SE_ResNeXt | 文末超大福利

    专栏介绍:Paddle Fluid 是用来让用户像 PyTorch 和 Tensorflow Eager Execution 一样执行程序.在这些系统中,不再有模型这个概念,应用也不再包含一个用于描述 ...

  7. Python量化交易之预测茅台股票涨跌(文末赠书福利)

    本文摘自清华大学出版<深入浅出Python量化交易实战>一书的读书笔记,这里把作者用KNN模式做的交易策略,换成了逻辑回归模型,试试看策略的业绩会有怎样的变化. 二话不说,上梯子,导库拉数 ...

  8. Python——LSTM、GRU 时间序列股票数据预测(文末完整代码)

    GRU 是在 LSTM 基础上的简化,将 LSTM 内部的三个闸门简化成两个,往往 GRU 的计算效果会优于 LSTM 目录 1. 导入工具包 2. 获取数据集 3. 数据预处理 4. 时间序列滑窗 ...

  9. matlab完整脚本模板,在PyCharm中给Python脚本设置默认的代码模板和活动模板,文末有一个案例(MATLAB GUI和Qt对比做一个界面)...

    前几天学到了这个,感觉挺方便的,记录下来. 先说默认的代码模板把: 它就是每当你新建一个Python脚本后,就会立马出现的一些代码,感觉一般都是用来记录作者和日期等.比如下面这样的: "&q ...

最新文章

  1. xsd的unique验证
  2. 从零学前端第十四讲:AngularJs进阶-作用域和控制器
  3. AndroidStudio设置不自动弹出 Documentation 窗口
  4. Qt数据库编程_基本
  5. 职高学的计算机单招考试能换专业吗,高职单招可以随便选专业吗
  6. 深度学习之基于GAN实现手写数字生成
  7. steam夏日促销悄然开始,用Python爬取排行榜上的游戏打折信息
  8. gradle for androidstudio 各版本下载地址
  9. Java 使用 POI 对 Excel文件 进行读写操作
  10. Unity 发布hololens注意事项
  11. 统计通话次数和时间的软件_通话时间统计app下载-通话时间统计下载 2.2.2 安卓版 - 河东软件园...
  12. 计算机并口优点,并口光驱优缺点有哪些 并口光驱如何转串口
  13. 什么!爬虫要违法了?别慌:守住规则,大胆去爬
  14. 例题 2-1 aabb 2-2 3n+1问题
  15. PHP内裤,用sqlmap来扒下她的内裤吧~
  16. 用js处理图片加载错误时加载默认图片的方法
  17. 计算机存储溢出 是什么意思,数据溢出是什么意思
  18. python请输入一个人的名字_print('曾经有一份真挚的爱情放在我面前,那个人的名字是' + goddess),Python旅程开始的地方!...
  19. 百万比亚迪仰望出圈靠的不止技术
  20. python将小写字母转化为大写_python如何定义函数将小写转换为大写

热门文章

  1. 世界上最经典的15句话!
  2. 读书笔记:《代码大全第2版》 08.语句
  3. websocket传输数据大小限制_websocket设置传输大小
  4. 网络游戏服务器设计浅析
  5. PDF课件下载!北京大学公开课《数据结构与算法Python版》
  6. 小程序安装Vant Weapp
  7. 计算机职称photoshop,计算机职称考试Photoshop6.0图像处理考试大纲
  8. SpringBoot配置文件分类
  9. 使用 Lisp 递归函数实现 斐波那契数列 Fibonacci
  10. 对于initialization failure 0x0000000c 的解决办法