我总结了所有面试题,Python一分钟带你探秘不为人知的网络昆虫!

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

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

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

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

在这里插入图片描述

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

如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入门教程》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值