爬虫基础之爬虫的基本介绍

一、爬虫概述

爬虫又称网络蜘蛛、网络机器人,网络爬虫按照系统结构和实现技术,大致可以分为以下几种类型:

  • 通用网络爬虫(Scalable Web Crawler):抓取互联网上所有数据,爬取对象从一些种子 URL 扩充到整个 Web,主要为门户站点搜索引擎和大型 Web 服务提供商采集数据,是捜索引擎抓取系统(Baidu、Google、Yahoo 等)的重要组成部分。
  • 聚焦网络爬虫(Focused Crawler):抓取互联网上特定数据,按照预先定义好的主题有选择地进行网页爬取的一种爬虫,将爬取的目标网页定位在与主题相关的页面中,选择性地爬取特定领域信息。
  • 增量式网络爬虫(Incremental Web Crawler):抓取互联网上刚更新的数据,采取增量式更新和只爬取新产生的或者已经发生变化网页,它能够在一定程度上保证所爬取的页面是尽可能新的页面,减少时间和空间上的耗费。
  • 深层网络爬虫(Deep Web Crawler):表层网页(Surface Web)是指传统搜索引擎可以索引的页面,以超链接可以到达的静态网页为主构成的 Web 页面;深层网页(Deep Web)是指不能通过静态链接获取的、隐藏在搜索表单后的,只有用户提交一些关键词才能获得的 Web 页面。在互联网中,深层页面的数量往往比表层页面的数量要多很多。

爬虫程序能模拟浏览器请求站点的行为,把站点返回的HTML代码/JSON数据/二进制数据(图片、视频、音频) 等爬取到本地,进而提取自己需要的数据,并存放起来使用,每一个程序都有自己的规则,网络爬虫也不例外,它会根据人们施加的规则去采集信息,这些规则为网络爬虫算法,根据使用者的目的,爬虫可以实现不同的功能,但所有爬虫的本质,都是方便人们在海量的互联网信息中找到并下载到自己要的那一类,提升信息获取效率。

爬虫采集的都是正常用户能浏览到的内容,而非所谓的 ”入侵服务器“,常说高水准者可 ”所见即所得“,意为只要是能看的内容就能爬取到,希望各位都能达到这个程度~

二、爬虫的用途

现如今大数据时代已经到来,网络爬虫技术成为这个时代不可或缺的一部分,企业需要数据来分析用户行为、自己产品的不足之处以及竞争对手的信息等,而这一切的首要条件就是数据的采集。网络爬虫的价值其实就是数据的价值,在互联网社会中,数据是无价之宝,一切皆为数据,谁拥有了大量有用的数据,谁就拥有了决策的主动权。

网络爬虫目前主要的应用领域如:搜索引擎、数据采集、数据分析、信息聚合、竞品监控、认知智能、舆情分析等等,爬虫业务相关的公司数不胜数,如百度、谷歌、天眼查、企查查、新榜、飞瓜等等,在大数据时代,爬虫的应用范围广、需求大,简单举几个贴近生活的例子:

  • 求职需求:获取各个城市的招聘信息及薪资标准,方便筛选出适合自己的;
  • 租房需求:获取各个城市的租房信息,以便挑选出心仪的房源;
  • 美食需求:获取各个地方的好评美食,让吃货不迷路;
  • 购物需求:获取各个商家同一个商品的价格及折扣信息,让购物更实惠;
  • 购车需求:获取心仪车辆近年的价格波动,以及不同渠道各车型的价格,助力挑选爱车。

三、URI 及 URL 的含义

URI(Uniform Resource Identifier),即统一资源标志符,URI(Uniform Resource Location),即统一资源定位符,例如 www.kuaidaili.com/ ,既是一个 URI,也是一个 URL,URL 是 URI 的子集,对于一般的网页链接,习惯称为 URL,一个 URL 的基本组成格式如下:

ini
复制代码
scheme://[username:password@]host[:port][/path][;parameters][?query][#fragment]

各部分含义如下:

  1. scheme:获取资源使用的协议,例如 http、https、ftp 等,没有默认值,scheme 也被称为 protocol;

  2. username:password:用户名与密码,某些情况下 URL 需要提供用户名和密码才能访问,这是个特殊的存在,一般访问 ftp 时会用到,显式的表明了访问资源的用户名与密码,但是可以不写,不写的话可能会让输入用户名密码;

  3. host:主机地址,可以是域名或 IP 地址,例如 www.kuaidaili.com、112.66.251.209;

  4. port:端口,服务器设定的服务端口,http 协议的默认端口为 80,https 协议的默认端口为 443,例如 www.kuaidaili.com/ 相当于 www.kuaidaili.com:443;

  5. path:路径,指的是网络资源在服务器中的指定地址,通过 host:port 我们能找到主机,但是主机上文件很多,通过 path 则可以定位具体文件。例如 www.baidu.com/file/index.… 为 /file/index.html,表示我们访问 /file/index.html 这个文件;

  6. parameters:参数,用来指定访问某个资源时的附加信息,主要作用就是像服务器提供额外的参数,用来表示本次请求的一些特性,例如 www.kuaidaili.com/dps;kspider… 即参数,现在用的很少,大多数将 query 部分作为参数;

  7. query:查询,由于查询某类资源,若多个查询,则用 & 隔开,通过 GET 方式请求的参数,例如:www.kuaidaili.com/dps/?userna… 部分为 username=kspider&type=spider,指定了 username 为 kspider,type 为 spider;

  8. fragment:片段,对资源描述的部分补充,用来标识次级资源,例如 www.kuaidaili.com/dps#kspider… 即为 fragment 的值:

    • 应用:单页面路由、HTML 锚点;
    • # 有别于 ?? 后面的查询字符串会被网络请求带上服务器,而 fragment 不会被发送的服务器;
    • fragment 的改变不会触发浏览器刷新页面,但是会生成浏览历史;
    • fragment 会被浏览器根据文件媒体类型(MIME type)进行对应的处理;
    • 默认情况下 Google 的搜索引擎会忽略 # 及其后面的字符串,如果想被浏览引擎读取,需要在 # 后紧跟一个 ! ,Google 会自动将其后面的内容转成查询字符串 _escaped_fragment_ 的值,如 www.kuaidaili.com/dps#!kspide… www.kuaidaili.com/dps?_escape…

由于爬虫的目标是获取资源,而资源都存储在某个主机上,所以爬虫爬取数据时必须要有一个目标的 URL 才可以获取数据,因此,URL 是爬虫获取数据的基本依据,准确理解 URL 的含义对爬虫学习有很大帮助。

四、爬虫的基本流程

  1. 发起请求:通过 URL 向服务器发起 Request 请求(同打开浏览器,输入网址浏览网页),请求可以包含额外的 headers、cookies、proxies、data 等信息,Python 提供了许多库,帮助我们实现这个流程,完成 HTTP 请求操作,如 urllib、requests 等;
  2. 获取响应内容:如果服务器正常响应,会接收到 Response,Response 即为我们所请求的网页内容,包含 HTML(网页源代码),JSON 数据或者二进制的数据(视频、音频、图片)等;
  3. 解析内容:接收到响应内容后,需要对其进行解析,提取数据内容,如果是 HTML(网页源代码),则可以使用网页解析器进行解析,如正则表达式(re)、Beautiful Soup、pyquery、lxml 等;如果是 JSON 数据,则可以转换成 JSON 对象进行解析;如果是二进制的数据,则可以保存到文件进行进一步处理;
  4. 保存数据:可以保存到本地文件(txt、json、csv 等),或者保存到数据库(MySQL,Redis,MongoDB 等),也可以保存至远程服务器,如借助 SFTP 进行操作等。

五、爬虫的基本架构

爬虫的基本架构主要由五个部分组成,分别是爬虫调度器、URL 管理器、网页下载器、网页解析器、信息采集器:

  1. 爬虫调度器:相当于一台电脑的 CPU,主要负责调度 URL 管理器、下载器、解析器之间的协调工作,用于各个模块之间的通信,可以理解为爬虫的入口与核心,爬虫的执行策略在此模块进行定义;
  2. URL 管理器:包括待爬取的 URL 地址和已爬取的 URL 地址,防止重复抓取 URL 和循环抓取 URL,实现 URL 管理器主要用三种方式,通过内存、数据库、缓存数据库来实现;
  3. 网页下载器:负责通过 URL 将网页进行下载,主要是进行相应的伪装处理模拟浏览器访问、下载网页,常用库为 urllib、requests 等;
  4. 网页解析器:负责对网页信息进行解析,可以按照要求提取出有用的信息,也可以根据 DOM 树的解析方式来解析。如正则表达式(re)、Beautiful Soup、pyquery、lxml 等,根据实际情况灵活使用;
  5. 数据存储器:负责将解析后的信息进行存储、显示等数据处理。

01

六、robots 协议

robots 协议也称爬虫协议、爬虫规则等,是指网站可建立一个 robots.txt 文件来告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取,而搜索引擎则通过读取 robots.txt 文件来识别这个页面是否允许被抓取。但是,这个robots协议不是防火墙,也没有强制执行力,搜索引擎完全可以忽视 robots.txt 文件去抓取网页的快照**。** 如果想单独定义搜索引擎的漫游器访问子目录时的行为,那么可以将自定的设置合并到根目录下的 robots.txt,或者使用 robots 元数据(Metadata,又称元数据)。

robots 协议并不是一个规范,而只是约定俗成的,所以并不能保证网站的隐私,俗称 “君子协议”。

robots.txt 文件内容含义:

  • User-agent:*, 这里的 * 代表的所有的搜索引擎种类,* 是一个通配符
  • Disallow: /admin/, 这里定义是禁止爬取 admin 目录下面的目录
  • Disallow: /require/, 这里定义是禁止爬取 require 目录下面的目录
  • Disallow:/ABC/, 这里定义是禁止爬取 ABC 目录下面的目录
  • Disallow:/cgi-bin/*.htm, 禁止访问 /cgi-bin/ 目录下的所有以 “.htm” 为后缀的 URL(包含子目录)
  • Disallow:/*?*, 禁止访问网站中所有包含问号 (?) 的网址
  • Disallow:/.jpg$, 禁止抓取网页所有的 .jpg 格式的图片
  • Disallow:/ab/adc.html, 禁止爬取 ab 文件夹下面的 adc.html 文件
  • Allow:/cgi-bin/, 这里定义是允许爬取 cgi-bin 目录下面的目录
  • Allow:/tmp, 这里定义是允许爬取 tmp 的整个目录
  • Allow: .htm$, 仅允许访问以 “.htm” 为后缀的 URL
  • Allow: .gif$, 允许抓取网页和 gif 格式图片
  • Sitemap:网站地图, 告诉爬虫这个页面是网站地图

查看网站 robots 协议,网站 url 加上后缀 robotst.txt 即可,以快代理为例:

arduino
复制代码
https://www.kuaidaili.com/

02

  • 禁止所有搜索引擎访问网站的任何部分
  • 禁止爬取 /doc/using/ 目录下面的目录
  • 禁止爬取 /doc/dev 目录下面所有以 sdk 开头的目录及文件

七、爬虫与法律

近年来,与网络爬虫相关的法律案件和新闻报道层出不穷,推荐观看:K哥爬虫普法专栏,不论是不是爬虫行业的可能都听说过一句 “爬虫学的好,牢饭吃到饱”,甚至不少人觉得爬虫本身就是有问题的,处于灰色地带,抗拒以致不敢学爬虫,但实际并不是这样,爬虫作为一种计算机技术,其技术本身是具有中立性的,法律也并没禁止爬虫技术,当今互联网很多技术是依赖于爬虫技术而发展的,公开数据、不做商业目的、不涉及个人隐私、不要把对方服务器爬崩、不碰黑产及黄赌毒就不会违法,技术无罪,有罪的是人,切记不要触碰法律的红线!

Python 的迅速崛起对整个行业来说都是极其有利的 ,但“人红是非多”,导致它平添了许许多多的批评,不过依旧挡不住它火爆的发展势头。

如果你对Python感兴趣,想要学习python,这里给大家分享一份Python全套学习资料,都是我自己学习时整理的,希望可以帮到你,一起加油!

😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓
Python全套学习资料

在这里插入图片描述

1️⃣零基础入门

① 学习路线

对于从来没有接触过Python的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

② 路线对应学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~
在这里插入图片描述

③练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
在这里插入图片描述

2️⃣国内外Python书籍、文档

① 文档和书籍资料

在这里插入图片描述

3️⃣Python工具包+项目源码合集

①Python工具包

学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
在这里插入图片描述

②Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
在这里插入图片描述

③Python小游戏源码

如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
在这里插入图片描述

4️⃣Python面试题

我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述

5️⃣Python兼职渠道

而且学会Python以后,还可以在各大兼职平台接单赚钱,各种兼职渠道+兼职注意事项+如何和客户沟通,我都整理成文档了。
在这里插入图片描述

上述所有资料 ⚡️ ,朋友们如果有需要的,可以扫描下方👇👇👇二维码免费领取🆓
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

腾讯云服务器可用区是什么意思?可用区选择方法

腾讯云服务器可用区是什么意思?云服务器可用区如何选择?可用区是指在同一个地域内电力和网络相互独立的区域,可用区可以做到故障隔离,所以可用区存在的意义在于构建高可用、高容灾应用,将应用部署在不同可用区内&#…

【2024全新版】程序员必会英语词汇表

“我英语不好可以学编程吗?” 相信这个问题,困扰着太多想学习编程,但英文不好的同学。 学习编程,常用的单词就那么多,只要把常见的单词学会,你的代码就能写的很6,英 语和编程的关系就是这么纯…

市场研究报告:量子计算将颠覆银行业!

(图片来源:网络) 量子银行将对金融体系产生重大影响,它在量子计算和区块链的基础上建立了一个更快的支付机制,并且通过消除传统点对点支付中常见的中间人,降低了运营成本。 量子计算及其运作机制 中东地区…

利用ffmpeg实现rtmp和rtsp推流

环境说明 windows11 : ffmpeg VLC Linux Unbuntu20.04 : SRS MediaMTX 可选:GStreamer win11下载ffmpeg和ffplay ffmpeg官网 添加环境变量:添加ffmpeg/bin所在的路径。 D:\ffmpeg\ffmpeg-master-latest-win64-lgpl-shared\bin win11查看本机电脑的设备…

JRebel

JRebel 下载: 1.在idea 直接下载 但版本不好控制 2.仓库下载地址:https://plugins.jetbrains.com/plugin/4441-jrebel-and-xrebel/versions/stable 注意版本:2022 .4.1 激活: 打开地址:https://jrebel.qekang.com/ …

英伟达真是赢麻了,深夜推出最强AI芯片霸场 | 百能云芯

10月14日凌晨,英伟达在2023年全球超算大会(Supercomputing Conference,SC)上正式宣布,升级旗舰AI芯片,推出全新的H200芯片,以处理更强大的人工智能系统。包括亚马逊的AWS、Alphabet的Google Clo…

CDP体系化建设1-CDP综述

前言 从CRM到DMP,再到CDP的横空出世,数据产品领域推陈出新的速度也挺快的。 而了解CDP的人可能会说,CDP和BI一样,糅杂了太多东西,都不知道如何概括。 在我看来,CDP也是一个看似简单,但是需要借助…

MYSQL存储引擎和索引

存储引擎 InnoDB(默认) 存储引擎的对比 MYISAM被MangoDB替代了 MEMORY被Redis替代了 索引 是一种高效获取数据的数据结构 索引结构 二叉树,红黑树(都不合适) B树 插入超过5个数,会从中间分裂 B树 …

Qt高级--(2)自定义标题栏

自定义标题栏 功能点 1.标题栏中最外层布局器使用水平布局器。 2.导航按钮、工具按钮和窗口功能按钮都是用水平布局器,边距和间隔可根据实际情况设置。 3.编写 QSS 样式,并将样式设置到窗口控件中。 4.实现最小化、最大化和关闭窗口按钮功能。 5.实现鼠…

可信联邦学习冬令营·成都开营,产学研共促AI人才培养

近年来,国家对于人工智能和数据安全的重视程度不断加强。国务院《新一代人工智能发展规划》中明确提出了加强人工智能领域的基础研究、培养高素质人才、促进产业融合等方面的要求。联邦学习是人工智能和隐私计算核心技术之一,以“数据不动模型动&#xf…

Tomcat web.xml文件中的mime-mapping

在Tomcat安装目录的conf/web.xml文件中&#xff0c;定义了大量的<mime-mapping>元素&#xff0c;例如&#xff1a; 其中<extension>指定了文件的扩展名&#xff0c;<mime-type>指定了mime类型&#xff0c;放在<mime-mapping>元素中&#xff0c;就是将…

APIcloud 【现已更名 用友开发中心】 iOS发版 应用程序请求用户同意访问相机和照片,但没有在目的字符串中充分说明相机和照片的使用。

iOS 审核时 提示 首次安装软件 获取相机 相册 提示信息 怎么修改 我们注意到你的应用程序请求用户同意访问相机和照片&#xff0c;但没有在目的字符串中充分说明相机和照片的使用。 为了解决这个问题&#xff0c;修改应用信息中的目的字符串是合适的。相机和照片的Plist文件&a…

layui表头多出一列(已解决)

问题描述 &#xff1a;layui表头多出来一列&#xff0c;但是表体没有内容&#xff0c;很影响美观。 好像是原本的表格有滚轮&#xff0c;我操作放大之后滚轮没有了&#xff0c;但是滚轮自带的表头样式还在&#xff0c; 之后手动把这个样式隐藏掉了&#xff0c;代码如下&#xf…

iceoryx(冰羚)-简介

概要 RouDi RouDi是Routing and Discovery的缩写。RouDi负责通信设置&#xff0c;但实际上并不参与发布者与订阅者或客户端与服务器之间的通信。鲁迪可以被认为是iceoryx的总机操作员。它的另一个主要任务是设置共享内存&#xff0c;应用程序使用共享内存交换有效负载数据。Ro…

操作系统(五)文件系统和I/O系统

文章目录 前言文件系统文件系统和文件文件描述符目录、文件别名和文件系统分层文件系统目录实现文件别名名字解析&#xff08;路径遍历&#xff09;文件系统挂载文件系统种类 虚拟文件系统文件缓存和打开文件打开文件 文件分配空闲空间管理和冗余磁盘阵列RAID空闲空间管理冗余磁…

JJJ:python学习笔记

p4 没有编译的过程 源码和输入得到输出 静态语言&#xff1a;编译型 脚本语言&#xff1a;解释型 p5 又叫做胶水语言 p7 p8 p10

RHCE8 资料整理(六)

RHCE8 资料整理 第 6 篇 软件管理第 23 章 用rpm管理软件23.1 rpm查询23.2 rpm卸载23.3 软件包升级23.4 rpm验证 第 24 章 用yum/dnf管理软件包24.1 yum架构介绍24.2 用光盘搭建yum源24.3 创建私有仓库24.4 yum客户端配置24.5 yum基本使用24.5.1 查询24.5.2 安装与卸载24.5.3 下…

Navicat Premium 16,无限重置试用14天

打开注册表编辑器 红箭头所指方向每个系统判别不一样 如何判别呢&#xff1f;一个个点开看底下是不是info&#xff0c;如果是那么把info文件夹删掉就可以了。

SecureCRT 9.4.2 for Mac

SecureCRT是一款由VanDyke Software公司开发的终端仿真软件&#xff0c;它提供了类似于Telnet和SSH等协议的远程访问功能。SecureCRT专门为网络管理员、系统管理员和其他需要保密访问网络设备的用户设计。 SecureCRT具有以下特点&#xff1a; 安全性&#xff1a;SecureCRT支持…

OpenHarmony应用开发入门教程(一、开篇)

前言 华为正式宣布2024年发布的华为鸿蒙OS Next版将不再兼容安卓系统。这一重大改变&#xff0c;预示着华为鸿蒙OS即将进入一个全新的阶段。 都说科技无国界&#xff0c;这是骗人的鬼话。谷歌的安卓12.0系统早已发布&#xff0c;但是自从受到美影响&#xff0c;谷歌就拒绝再向…