c爬虫抓取网页数据( 图片来源于网络1.爬虫的流程架构大致的工作流程)
优采云 发布时间: 2021-12-10 20:08c爬虫抓取网页数据(
图片来源于网络1.爬虫的流程架构大致的工作流程)
网络爬虫的基本概念和认知
图片来自网络
1. 爬虫的定义
网络爬虫(也称为网络蜘蛛、网络机器人,在 FOAF 社区中,更常见的是网络追逐)是根据某些规则自动抓取万维网上信息的程序或脚本。其他不太常用的名称包括蚂蚁、自动索引、模拟器或蠕虫。——百度百科定义详细定义参考
Mukenet评论:爬虫实际上是一种自动化的信息程序或脚本,可以方便地帮助大家获取自己想要的具体信息。比如百度、谷歌这样的搜索引擎,其背后的重要技术支持就是爬虫。当我们使用搜索引擎搜索某个信息时,展示在我们面前的搜索结果是由爬虫程序预先从万维网上爬取而来的。我们之所以称其为爬虫,只是比喻自动获取万维网。
2. 爬虫的进程架构
爬虫的一般工作流程如下图所示:首先获取数据,然后清洗处理数据,最后持久化存储数据,然后可视化数据。在接下来的章节中,我们将遵循这个过程并详细介绍它们。
爬虫进程架构图
3. 爬虫分类
根据系统结构和实现技术,爬虫大致可以分为以下几类:
3.1 个通用网络爬虫
一般爬虫主要是指谷歌、百度等搜索引擎。它们爬取范围广,种类多,存储信息量大,技术要求比较高。
3.2 聚焦网络爬虫
关注爬虫,主要是基于特定主题的爬取。这是大家使用时间最长的爬虫类型。例如,我们抓取金融,或电影、书籍和其他特定信息。由于我们限制了主题和网站,可以大大节省我们的硬盘和网络资源,更好地满足特定业务的需求。
3.3 增量爬网
增量爬虫主要是指我们定期爬取一些网站时,只爬取网站变化的内容,而不是再次爬取所有网站数据。. 这样可以有效降低运维成本。
3.4 深网爬虫
深度网络爬虫主要是指一些我们无法直接爬取的网站。比如这些网站,需要用户登录,或者填写一些特定的表格,才能继续爬取信息。
Tips:在实际项目中,我们通常会结合两种或两种以上的爬虫技术来达到更好的效果。
4. 爬虫的爬取策略
爬虫根据不同的业务需求,大致可以分为两种不同的爬虫策略:
4.1 深度优先策略
深度优先策略是指在爬取HTML页面时,如果爬虫在页面中发现了新的URL,就会对新的URL进行深度优先搜索,依此类推,沿着URL爬行直到找不到深入。直到。然后,返回到最后一个 URL 地址并搜索其他 URL。当页面上没有可供选择的新 URL 时,搜索结束。
举个简单的例子,比如我们访问,假设的首页只有两个课程链接,一个是爬虫类,一个是Python类。深度优先算法是先进入爬虫类,然后进入爬虫类的一个章节链接中,如果本章没有子章节,爬虫会退到上层继续从另一个访问未访问的章节。访问完所有章节后,爬虫会返回首页。对Python课链接也进行相应的搜索,直到找不到新的URL,搜索结束。
4.2 广度优先策略
广度优先策略是指爬虫需要爬取一个完整网页的所有网址,然后才能继续搜索下一页直到底部。
它仍然是我们的例子。来到的首页后,我们需要在的首页获取Python和爬取课程的URL,才能继续搜索这两个课程的子章节的URL。然后逐层进行,直到结束。
Tips:深度优先适用于网站嵌套较深的搜索网站,而广度优先策略更适用于时间要求高、网站@同级别的URL较多的页面> 页。
5. 爬虫的学习基础
学习爬虫,我们需要以下基础知识:
如果你没有Python语言或数据库的基础知识,可以参考Mukenet的相关wiki进行学习。
当然,为了方便大家理解,我会在代码中添加详细的注释。即使你没有Python语言基础,也可以先了解大致流程,然后再排查遗漏,学习相应的知识。
有同学可能会疑惑,为什么一定要用python语言来开发爬虫。不能用其他语言吗?
这不得不说是Python的第三方库。Python之所以如此受欢迎,官方是因为它拥有大量的库,而且这些库的性能和使用都比较简单高效。凭借Python语言本身的高效率,只需一行代码就可以实现10个简单的爬虫,而在java/C/C++等其他语言中,至少需要编写几十行代码. 因此,使用Python开发爬虫程序,赢得了众多程序员的青睐。
比如,人们习惯在楼下的便利店买饮料。虽然离门口一公里有一家比较大的超市,但相信大家都不愿意买,因为太麻烦,不方便。这就是Python语言成为爬虫主流语言的精髓所在。
在接下来的学习中,我们将使用 Python 的几个第三方库。所谓第三方库是指Python的官方库(例如system“os”和time“time”\等库),非官方发布的库,如requests等库,称为第三方库。
安装Python解释器时默认已经安装了官方的Python库,需要手动安装第三方库。比如我们在爬虫开发中经常用到Requests库。安装第三方库很简单,在终端执行如下命令即可:
pip install requests
后面讲到具体的库时,我们会做详细的介绍。
下面是爬虫开发中常用的Python库对比:
套餐介绍
网址库
不需要安装 Python 自带的库。但是,在不同的python版本中,urlib在细节上有所不同。实际开发中过于繁琐,header无法伪装,很容易被阻塞。因此,现在使用它的人并不多。
要求
与urllib相比,它不仅拥有url的所有功能,更重要的是语法简洁优雅,而且在兼容性方面完全兼容python2和python3,非常方便。同时,它还可以伪装请求。
urllib3
urllib3 库提供了一些 urllib 没有的重要特性,例如线程安全、连接池和对压缩编码的支持。
这里推荐requests库,简单方便,容易上手,非常适合使用爬虫的新手。如果没有特殊说明,我们将在后续课程中默认使用 requests 库。
6. 爬虫的法律伦理问题
近年来,可以说通过编写爬虫程序来抓取大量数据而获利的程序员层出不穷。您可能会担心在使用爬虫的过程中是否会触犯法律。其实只要合理使用爬虫,就不会轻易触犯法律。那么,什么是爬虫的合理使用呢?我总结了以下三点供大家参考:
不管法律方面,我们也必须严于律己,遵守一些特定的规则。这里我想说的是爬虫世界中的robots协议。这是网站的所有者为爬虫设计的协议,通常位于网站的根目录下。它指定哪些目录可以被爬取,哪些不能。我们需要遵守这个约定好的协议,以避免不必要的麻烦。
7. 个人经历
在实际工作项目中,如果我们是做爬虫工作的工程师,在精通爬虫基础技术的同时,应该熟悉和了解数据清洗和处理技术。只有这样,我们才能更好地与团队协作。. 当然,这些技术会在后面的章节中一一为大家介绍。
好的,让我们开始爬虫世界的欢乐之旅吧!