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的热门话题分析
相关文章
|
7月前
|
数据采集 弹性计算 Kubernetes
单机扛不住,我把爬虫搬上了 Kubernetes:弹性伸缩与成本优化的实战
本文讲述了作者在大规模爬虫项目中遇到的挑战,包括任务堆积、高失败率和成本失控。通过将爬虫项目迁移到Kubernetes并使用HPA自动伸缩、代理池隔离和Redis队列,作者成功解决了这些问题,提高了性能,降低了成本,并实现了系统的弹性伸缩。最终,作者通过这次改造学到了性能、代理隔离和成本控制的重要性。
237 2
单机扛不住,我把爬虫搬上了 Kubernetes:弹性伸缩与成本优化的实战
|
6月前
|
数据采集 Web App开发 数据安全/隐私保护
实战:Python爬虫如何模拟登录与维持会话状态
实战:Python爬虫如何模拟登录与维持会话状态
|
7月前
|
数据采集 Web App开发 自然语言处理
新闻热点一目了然:Python爬虫数据可视化
新闻热点一目了然:Python爬虫数据可视化
|
6月前
|
数据采集 运维 监控
爬虫与自动化技术深度解析:从数据采集到智能运维的完整实战指南
本文系统解析爬虫与自动化核心技术,涵盖HTTP请求、数据解析、分布式架构及反爬策略,结合Scrapy、Selenium等框架实战,助力构建高效、稳定、合规的数据采集系统。
1066 62
爬虫与自动化技术深度解析:从数据采集到智能运维的完整实战指南
|
6月前
|
数据采集 机器学习/深度学习 人工智能
反爬虫机制深度解析:从基础防御到高级对抗的完整技术实战
本文系统阐述了反爬虫技术的演进与实践,涵盖基础IP限制、User-Agent检测,到验证码、行为分析及AI智能识别等多层防御体系,结合代码实例与架构图,全面解析爬虫攻防博弈,并展望智能化、合规化的发展趋势。
2245 62
反爬虫机制深度解析:从基础防御到高级对抗的完整技术实战
|
6月前
|
数据采集 监控 数据库
Python异步编程实战:爬虫案例
🌟 蒋星熠Jaxonic,代码为舟的星际旅人。从回调地狱到async/await协程天堂,亲历Python异步编程演进。分享高性能爬虫、数据库异步操作、限流监控等实战经验,助你驾驭并发,在二进制星河中谱写极客诗篇。
Python异步编程实战:爬虫案例
|
6月前
|
数据采集 人工智能 JSON
Prompt 工程实战:如何让 AI 生成高质量的 aiohttp 异步爬虫代码
Prompt 工程实战:如何让 AI 生成高质量的 aiohttp 异步爬虫代码
|
7月前
|
数据采集 存储 XML
Python爬虫技术:从基础到实战的完整教程
最后强调: 父母法律法规限制下进行网络抓取活动; 不得侵犯他人版权隐私利益; 同时也要注意个人安全防止泄露敏感信息.
975 19
|
6月前
|
数据采集 存储 JSON
Python爬虫常见陷阱:Ajax动态生成内容的URL去重与数据拼接
Python爬虫常见陷阱:Ajax动态生成内容的URL去重与数据拼接
|
6月前
|
数据采集 存储 JavaScript
解析Python爬虫中的Cookies和Session管理
Cookies与Session是Python爬虫中实现状态保持的核心。Cookies由服务器发送、客户端存储,用于标识用户;Session则通过唯一ID在服务端记录会话信息。二者协同实现登录模拟与数据持久化。

推荐镜像

更多
下一篇
开通oss服务