通用爬虫的概念简述

一、🌈什么是通用爬虫

通用爬虫(General Purpose Web Crawler或Scalable Web Crawler)是一种网络爬虫,其设计目标是对整个互联网或尽可能广泛的网络空间进行数据抓取。通用爬虫主要用于搜索引擎构建其庞大的网页索引数据库,从互联网中自动爬取、下载网页内容,形成网页的海量集合,以便后续对这些数据进行索引、存储和搜索。
在这里插入图片描述

通用网络爬虫是搜索引擎抓取系统(Baidu、Google、Yahoo等)重要组成部分。主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份。

通用搜索引擎(Search Engine)工作原理

通用网络爬虫从互联网中搜集网页,采集信息,这些网页信息用于为搜索引擎建立索引从而提供支持,它决定着整个引擎系统的内容是否丰富,信息是否即时,因此其性能的优劣直接影响着搜索引擎的效果。


二、🌈特点

  1. 全面性:起始点通常是少数几个种子URL,然后通过跟踪网页上的超链接逐渐扩展到整个互联网。
  2. 大规模:能够处理数以亿计的网页,并持续不断地更新和增加新的网页数据。
  3. 高效性:采用高效的爬取策略,例如广度优先搜索、深度优先搜索或是更复杂的启发式算法,以最合理的方式遍历互联网。
  4. 自我更新:定期重新抓取网页以更新索引内容,对于高权重或频繁更新的网站可能会更频繁地抓取。
  5. 策略调整:根据网站的robots.txt协议以及爬虫道德规范,控制抓取速度和频率,避免给网站服务器带来过大压力。
  6. 分布式架构:由于要处理的数据量极其庞大,往往采用分布式计算架构,实现多线程或多机并行爬取。

搜索引擎网络爬虫的基本工作流程如下:

  1. 首先选取一部分的种子URL,将这些URL放入待抓取URl队列;
  2. 取出待抓取URL,解析DNS得到主机IP,并将URL对应的网页下载下来,存储进已下载网页中,并将这些URL放进抓取URL队列
  3. 分析已抓取URL队列中的URL,分析其中的其他URL,并且将URL放入待抓取URL队列,从而进入下一个循环……

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

  1. 新网站向搜索引擎主动提交网址:(如百度http://zhanzhang.baidu.com/linksubmit/url)
  2. 在其他网站上设置新网站外链(尽可能处于搜索引擎爬虫爬取范围)
  3. 搜索引擎和DNS解析服务商(如:DNSpod等)合作,新网站域名将被迅速抓取。

在这里插入图片描述


三、🌈步骤

  1. 定义抓取目标与范围

    • 明确爬虫的目的,即需要从哪些网站或什么样的网页中获取什么类型的数据。
    • 设定抓取的深度限制,比如是否仅抓取特定层级的链接,还是全网爬取。
  2. 制定抓取策略

    • 确定爬虫的起始URL列表,也就是所谓的“种子”URL。
    • 制定URL发现规则,比如通过HTML中的<a>标签提取链接,或者根据网站的结构决定抓取路径。
    • 设定抓取频率、延迟以及其他策略,以遵守网站的robots.txt协议和尊重网站服务器的资源。
  3. 发送HTTP请求

    • 使用HTTP客户端库(如Python的Requests库)向目标URL发送GET或POST请求。
    • 根据需要配置请求头,模拟浏览器行为,包括User-Agent、Cookies、Referer等,以降低被目标网站识别为爬虫的风险。
    • 可能还需要使用代理IP或其他手段来绕过访问限制。
  4. 接收和解析响应

    • 接收服务器返回的HTTP响应,获取网页内容。
    • 使用HTML或XML解析器(如BeautifulSoup、lxml、PyQuery或基于DOM的解析方式)解析网页结构。
    • 对于非HTML内容,可能需要相应的内容解析方法,如JSON、XML等。
  5. 提取数据

    • 根据预先设定好的规则,从网页内容中提取有用数据,例如文本、图片、链接或者其他特定元素。
    • 可能需要用到CSS选择器、XPath或其他模式匹配技术。
  6. URL管理与调度

    • 将解析得到的新URL添加到URL队列中,等待爬取。
    • 实现URL去重,避免爬取已访问过的网页。
    • 根据策略从队列中取出URL进行下一步抓取。
  7. 数据存储

    • 将爬取的数据储存到本地文件、数据库或者云端存储服务。
    • 数据可能需要清洗、转换或结构化以便后续分析和使用。
  8. 监控与终止条件

    • 设置适当的爬虫运行监控,包括错误处理、性能监控及资源占用情况。
    • 定义停止抓取的条件,比如达到预定抓取数量、抓取时间限制、磁盘空间不足等。
  9. 循环迭代

    • 持续从URL队列中获取新的URL进行抓取,直至满足停止条件。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/596413.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《债务与国家的崛起》西方民主制度的金融起源 - 三余书屋 3ysw.net

债务与国家的崛起&#xff1a;西方民主制度的金融起源 你好&#xff0c;今天我们来聊聊由英国知名经济与金融历史学家詹姆斯麦克唐纳所著的《债务与国家的崛起》这本书。19世纪世界历史上发生了一次巨变&#xff0c;即“大分流”。当时西方通过工业革命实现了科技和经济的飞速…

【开源语音项目OpenVoice](一)——实操演示

目录 一、前菜 1、Python选择 2、pip源切换 3、ffmpeg配置问题 4、VSCode添加Jupyter扩展 二、配置虚拟环境 1、下载源码 方法一 直接下载源码压缩包 方法二 使用git 1&#xff09;git加入鼠标右键 2&#xff09;git clone源码 2、VSCode出场 1&#xff09;创建pyth…

Bayes-RF,基于贝叶斯Bayes优化算法优化随机森林RF分类预测(二分类及多分类皆可)-附代码

Bayesian Optimization&#xff08;贝叶斯优化&#xff09;是一种用于超参数调优的技术&#xff0c;对于类似随机森林&#xff08;Random Forest&#xff0c;简称RF&#xff09;的机器学习算法非常重要。随机森林是一种集成学习方法&#xff0c;它在训练过程中构建多个决策树&a…

How-Google-Tests-Software_Google软件测试之道_英文版pdf

我看How-Google-Tests-Software_Google软件测试之道_英文版pdf挺难找的 在这里分享一下 链接: https://pan.baidu.com/s/1bTafUY4CFcMVxrNrdBp7Zg 提取码: 5q4p 复制这段内容后打开百度网盘手机App&#xff0c;操作更方便哦

【Python使用】嘿马头条完整开发md笔记第4篇:数据库,1 方案选择【附代码文档】

嘿马头条项目从到完整开发笔记总结完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;课程简介&#xff0c;ToutiaoWeb虚拟机使用说明1 产品介绍,2 原型图与UI图,3 技术架构,4 开发,1 需求,2 注意事项。数据库&#xff0c;理解ORM1 简介,2 安装,3 数据库连接…

计算机网络——37认证

认证 目标&#xff1a;Bob需要Alice证明他的身份 Protocol ap1.0&#xff1a;Alice说"A am Alice" 可能出现的问题&#xff1a; 在网络上Bob看不到Alice&#xff0c;因此Trudy可以简单的声称他是Alice 认证&#xff1a;重新尝试 Protocol ap2.0&#xff1a;Alice…

Unity和Android的交互

Unity和Android的交互 一、前言二、Android导出jar/aar包到Unity2.1 版本说明2.2 拷贝Unity的classes.jar给Android工程2.2.1 classes.jar的位置2.2.2 Android Studio创建module2.2.3 拷贝classes.jar 到 Android工程并启用 2.3 编写Android工程代码2.3.1 创建 MainActivity2.…

前端canvas项目实战——在线图文编辑器(八):复制、删除、锁定、层叠顺序

目录 前言一、效果展示二、实现步骤1. 复制2. 删除3. 锁定4. 层叠顺序 三、实现过程中发现的bug1. clone方法不复制自定义属性2. 复制「锁定」状态的对象&#xff0c;得到的新对象也是「锁定」状态 四、Show u the code后记 前言 上一篇博文中&#xff0c;我们细致的讲解了实现…

HUD抬头显示器阳光倒灌实验一般步骤

概述 汽车HUD&#xff08;Head-Up Display&#xff0c;即抬头显示器&#xff09;阳光倒灌实验是一种用于评估汽车抬头显示器在阳光直射条件下显示效果的测试。该实验的目的是确保HUD系统在强烈的阳光下依然能够清晰地显示信息&#xff0c;不影响驾驶员的视线和驾驶安全。 一般…

Redis性能管理及主从复制、哨兵的配置与部署

一、redis性能管理 1.1 查看Redis内存使用 1.2 内存碎片率 1.3 内存使用率 1.3.1 避免内存交换发生的方法 1.4 内回收key 1.4.1 配置文件中修改 maxmemory-policy 属性值 1.5 缓存穿透 1.5.1 原因 1.5.2 条件 1.5.3 解决方案 1.6 缓存击穿 1.6.1 原因 1.6.2 现象…

院内感染的相关因素分析(Boruta联合SHAP分析2)R

院内感染的相关因素分析&#xff08;Boruta联合SHAP分析2&#xff09;R 和鲸社区一键运行代码 院内感染是指住院患者在医疗机构内发生的感染&#xff0c;是医院管理中常见且严重的问题。院内感染不仅会延长患者住院时间&#xff0c;增加医疗费用&#xff0c;还会严重威胁患者生…

双向链表专题

⽬录 1. 双向链表的结构 2. 实现双向链表 3. 顺序表和双向链表的分析 正⽂开始 1. 双向链表的结构 注意&#xff1a;这⾥的“带头”跟前⾯我们说的“头节点”是两个概念&#xff0c;实际前⾯的在单链表阶段称呼不严 谨&#xff0c;但是为了同学们更好的理解就直接称为单…