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

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 本节介绍了爬虫的由来,爬虫的基本流程,以及爬虫如何来获得一个新的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的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
19天前
|
数据采集 存储 XML
Python爬虫:深入探索1688关键词接口获取之道
在数字化经济中,数据尤其在电商领域的价值日益凸显。1688作为中国领先的B2B平台,其关键词接口对商家至关重要。本文介绍如何通过Python爬虫技术,合法合规地获取1688关键词接口,助力商家洞察市场趋势,优化营销策略。
|
4天前
|
数据采集 JSON API
如何利用Python爬虫淘宝商品详情高级版(item_get_pro)API接口及返回值解析说明
本文介绍了如何利用Python爬虫技术调用淘宝商品详情高级版API接口(item_get_pro),获取商品的详细信息,包括标题、价格、销量等。文章涵盖了环境准备、API权限申请、请求构建和返回值解析等内容,强调了数据获取的合规性和安全性。
|
9天前
|
数据采集 存储 API
利用Python爬虫获取1688关键词接口全攻略
本文介绍如何使用Python爬虫技术合法合规地获取1688关键词接口数据,包括环境准备、注册1688开发者账号、获取Access Token、构建请求URL、发送API请求、解析HTML及数据处理存储等步骤,强调遵守法律法规和合理使用爬虫技术的重要性。
|
16天前
|
数据采集 JSON 开发者
Python爬虫京东商品详情数据接口
京东商品详情数据接口(JD.item_get)提供商品标题、价格、品牌、规格、图片等详细信息,适用于电商数据分析、竞品分析等。开发者需先注册账号、创建应用并申请接口权限,使用时需遵循相关规则,注意数据更新频率和错误处理。示例代码展示了如何通过 Python 调用此接口并处理返回的 JSON 数据。
|
21天前
|
XML 数据采集 数据格式
Python 爬虫必备杀器,xpath 解析 HTML
【11月更文挑战第17天】XPath 是一种用于在 XML 和 HTML 文档中定位节点的语言,通过路径表达式选取节点或节点集。它不仅适用于 XML,也广泛应用于 HTML 解析。基本语法包括标签名、属性、层级关系等的选择,如 `//p` 选择所有段落标签,`//a[@href='example.com']` 选择特定链接。在 Python 中,常用 lxml 库结合 XPath 进行网页数据抓取,支持高效解析与复杂信息提取。高级技巧涵盖轴的使用和函数应用,如 `contains()` 用于模糊匹配。
|
23天前
|
数据采集 XML 存储
构建高效的Python网络爬虫:从入门到实践
本文旨在通过深入浅出的方式,引导读者从零开始构建一个高效的Python网络爬虫。我们将探索爬虫的基本原理、核心组件以及如何利用Python的强大库进行数据抓取和处理。文章不仅提供理论指导,还结合实战案例,让读者能够快速掌握爬虫技术,并应用于实际项目中。无论你是编程新手还是有一定基础的开发者,都能在这篇文章中找到有价值的内容。
|
22天前
|
数据采集 JavaScript 前端开发
Python爬虫能处理动态加载的内容吗?
Python爬虫可处理动态加载内容,主要方法包括:使用Selenium模拟浏览器行为;分析网络请求,直接请求API获取数据;利用Pyppeteer控制无头Chrome。这些方法各有优势,适用于不同场景。
|
1月前
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
105 6
|
1月前
|
数据采集 前端开发 中间件
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第26天】Python是一种强大的编程语言,在数据抓取和网络爬虫领域应用广泛。Scrapy作为高效灵活的爬虫框架,为开发者提供了强大的工具集。本文通过实战案例,详细解析Scrapy框架的应用与技巧,并附上示例代码。文章介绍了Scrapy的基本概念、创建项目、编写简单爬虫、高级特性和技巧等内容。
77 4
|
4月前
|
数据采集 存储 中间件
Python进行网络爬虫:Scrapy框架的实践
【8月更文挑战第17天】网络爬虫是自动化程序,用于从互联网收集信息。Python凭借其丰富的库和框架成为构建爬虫的首选语言。Scrapy作为一款流行的开源框架,简化了爬虫开发过程。本文介绍如何使用Python和Scrapy构建简单爬虫:首先安装Scrapy,接着创建新项目并定义爬虫,指定起始URL和解析逻辑。运行爬虫可将数据保存为JSON文件或存储到数据库。此外,Scrapy支持高级功能如中间件定制、分布式爬取、动态页面渲染等。在实践中需遵循最佳规范,如尊重robots.txt协议、合理设置爬取速度等。通过本文,读者将掌握Scrapy基础并了解如何高效地进行网络数据采集。
238 6
下一篇
DataWorks