python爬虫分类和robots协议 | python爬虫实战之一

简介: 本节介绍了爬虫的由来,爬虫的基本流程,以及爬虫如何来获得一个新的URL,还对robot协议作出一些简单地介绍。

python概述

爬虫一直是跟大数据关系比较密切的,大数据就是对海量数据处理的一些方式,包含对海量数据如何采集。以前对于数据的采集是通过日志的方式来进行。而在现在的移动互联时代,面对大量数据,我们如何去拿到我们想要的内容。灵感就来自于爬虫。爬虫在我们身边一直存在,搜索引擎本身就属于爬虫。最早的搜索引擎就是数据库关系建立的,随着数据规模越来越大,发现仅依靠数据库是不行的,搜索引擎诞生之后,发现数据太多了,而且为了迎合大众,必须去不断的收集这些信息。而实际上,最早遇到大数据难题的就是搜索引擎(雅虎、谷歌、百度等)。搜索引擎为了大量的自动化的去采集数据,所以编写了爬虫。

爬虫,应该称为网络爬虫,也叫网页蜘蛛、网络机器人、网络蚂蚁等。

搜索引擎,就是最早的网络爬虫的应用者。大多数网站提供的数据必须自动采集,大多数网站提供的内容也必须自动更新,这是它的主要工作内容。那对于爬出来的数据如何处理,存放在传统的数据库中是否合适,是否可以放在日志中处理,存放多大的空间,在早期的时候处理海量数据是搜索引擎的难题。爬虫只是解决了数据采集的难题,而数据如何存储,数据如何处理,数据如何查询这才是真正需要考虑的东西。

为什么到了今天,反而这个词汇被频繁的提起呢?有搜索引擎不就够了吗?实际上,大数据时代的到了,所有的企业都希望通过海量数据发现其中的价值。所以,需要爬取对特定网站、特定类别的数据,而搜索引擎不能提供这样的功能,因此,需要自己开发爬虫来解决。

爬虫分类

通用爬虫

常见就是搜索引擎,无差别的收集数据、存储,提取关键字,构建索引库,给用户提供搜索接口。
爬取一般流程
1、初始一批URL, 将这些URL放到待爬取队列

2、从队列取出这些URL, 通过DNS解析IP, 对IP对应的站点下载HTML页面, 保存到本地服务器中, 爬取完的URL放到已爬取队列。

在搜索引擎中有文字必须全部爬取,然后对这些文字进行处理,即建立索引,我们一般称为倒排索引,其实就是通过索引来找文档。我们对爬取的内容是什么样的形式并不关心,但是需要注意,中文与拉丁字母是不一样的,中文中除了标点符号这些断字断句之外,语义上是不间断的,与英文不一样,不间断即为一个单词。中文必须要进行分词处理。然后我们就可以下载这个html页面了,即在浏览器中把拓扑树解析了,所有的文本内容迭代出来,然后获取得到。爬取的内容需要保存到本地服务器当中, 爬取完的URL放到已爬取队列。

3、分析这些网页内容, 找出网页里面的其他关心的URL链接, 继续执行第2步, 直到爬取条件结束。

在URL里面将链接提取出来之后,然后就能确定这个链接是指向哪个域名或者IP的,之后就可以进一步的将域名或者IP加入到待爬取队列当中。待爬取队列数据是在不断增加的,对于爬虫而言,则会不断地去迭代待爬取队列,对URL所对应的的内容进行提取,之后对内容进行存储、归档、分析,判断是否有新的URL链接,然后周而复始。

搜索引擎如何获取一个新网站的URL

  • 新网站主动提交给搜索引擎
  • 通过其它网站页面中设置的外链
  • 搜索引擎和DNS服务商合作, 获取最新收录的网站

聚焦爬虫

有针对性的编写特定领域数据的爬取程序,针对某些类别数据采集的爬虫,是面向主题的爬虫(爬取体育版的内容,娱乐版的内容)。

聚焦爬虫的爬取流程跟通用爬虫的爬取流程是一样的。

Robots协议

指定一个robots.txt文件, 告诉爬虫引擎什么可以爬取。
我们以下面为例,截取部分做说明。
淘宝 http://www.taobao.com/robots.txt

image.png
image.png
image.png
image.png

User-agent在网站中是非常重要的,可以对用户类别的分析,浏览器的分析等,对于爬虫来讲,需要告知是什么类型的爬虫,例如:Baiduspider则必须要遵守下面所描述的约定。允许爬取什么内容,不允许爬取什么内容,需要去遵守。

淘宝首页所带的搜索框是没有爬虫的搜索引擎,而是把所有商品的类目用来建立一个索引库。

对于Googlebot相对可以爬取的内容就比较多一点。对于某些网站来讲,是欢迎搜索引擎的。

Bingbot允许搜索的内容和Googlebot一样。

Yahoo中可以爬取的内容相较于上面两个而言,是比较少一点的。

User-Agent是其他的意思,其他搜索引擎是不允许爬取的。

我们再来看一下马蜂窝的robots协议:
马蜂窝:http://www.mafengwo.cn/robots.txt

image.png
image.png
image.png

User-agent:*代表通用。也就是说所有的搜索引擎都必须遵守下列的协议。
马蜂窝上面所列都不允许去爬取。
其它爬虫,不允许爬取

User-Agent:*
Disallow:/

如果需要知道网站的内容信息,需要去Sitemap查看。

在网站提供了友好的访问方式的情况下,我们实际上是可以不去爬取那些不被允许爬取的内容的,但是如果站点信息并没有提供,那么我们可以根据robots来知道关键数据在哪(一般不建议)。

robots协议是一个君子协定,“爬亦有道”。

这个协议为了让搜索引擎更有效率搜索自己内容, 提供了如Sitemap这样的文件。这个文件禁止抓取的往往又是可能我们感兴趣的内容,它反而泄露了这些地址。

配套视频课程,点击这里查看

获取更多资源请订阅Python学习站

相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
相关文章
|
11月前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
1146 7
|
11月前
|
数据采集 Web App开发 数据安全/隐私保护
实战:Python爬虫如何模拟登录与维持会话状态
实战:Python爬虫如何模拟登录与维持会话状态
|
11月前
|
存储 分布式计算 测试技术
Python学习之旅:从基础到实战第三章
总体来说,第三章是Python学习路程中的一个重要里程碑,它不仅加深了对基础概念的理解,还引入了更多高级特性,为后续的深入学习和实际应用打下坚实的基础。通过这一章的学习,读者应该能够更好地理解Python编程的核心概念,并准备好应对更复杂的编程挑战。
291 12
|
11月前
|
数据采集 人工智能 JSON
Prompt 工程实战:如何让 AI 生成高质量的 aiohttp 异步爬虫代码
Prompt 工程实战:如何让 AI 生成高质量的 aiohttp 异步爬虫代码
|
11月前
|
数据采集 存储 JSON
Python爬虫常见陷阱:Ajax动态生成内容的URL去重与数据拼接
Python爬虫常见陷阱:Ajax动态生成内容的URL去重与数据拼接
|
11月前
|
存储 数据采集 监控
Python文件操作全攻略:从基础到高级实战
本文系统讲解Python文件操作核心技巧,涵盖基础读写、指针控制、异常处理及大文件分块处理等实战场景。结合日志分析、CSV清洗等案例,助你高效掌握文本与二进制文件处理,提升程序健壮性与开发效率。(238字)
779 1
|
11月前
|
Java 调度 数据库
Python threading模块:多线程编程的实战指南
本文深入讲解Python多线程编程,涵盖threading模块的核心用法:线程创建、生命周期、同步机制(锁、信号量、条件变量)、线程通信(队列)、守护线程与线程池应用。结合实战案例,如多线程下载器,帮助开发者提升程序并发性能,适用于I/O密集型任务处理。
908 0
|
11月前
|
机器学习/深度学习 监控 数据挖掘
Python 高效清理 Excel 空白行列:从原理到实战
本文介绍如何使用Python的openpyxl库自动清理Excel中的空白行列。通过代码实现高效识别并删除无数据的行与列,解决文件臃肿、读取错误等问题,提升数据处理效率与准确性,适用于各类批量Excel清理任务。
903 0
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
769 6
|
数据采集 JSON 前端开发
Python爬虫进阶:使用Scrapy库进行数据提取和处理
在我们的初级教程中,我们介绍了如何使用Scrapy创建和运行一个简单的爬虫。在这篇文章中,我们将深入了解Scrapy的强大功能,学习如何使用Scrapy提取和处理数据。

推荐镜像

更多