【基础】【Python网络爬虫】【1.认识爬虫】什么是爬虫,爬虫分类,爬虫可以做什么

Python网络爬虫基础

  • 认识爬虫
    • 1.什么是爬虫
    • 2.爬虫可以做什么
    • 3.为什么用 Ptyhon 爬虫
    • 4.爬虫的分类
      • 通用爬虫
      • 聚焦爬虫
      • 功能爬虫
      • 增量式爬虫
      • 分布式爬虫
    • 5.爬虫的矛与盾(重点)
    • 6.盗亦有道的君子协议robots
    • 7.爬虫合法性探究

认识爬虫

1.什么是爬虫

网络爬虫(Crawler)又称网络蜘蛛,或者网络机器人(Robots). 它是一种按照一定的规则, 自动地抓取万维网信息的程序或者脚本。换句话来说,它可以根据网页的链接地址自动获取网页内容。如果把互联网比做一个大蜘蛛网,它里面有许许多多的网页,网络蜘蛛可以获取所有网页的内容。

爬虫是一个模拟人类请求网站行为, 并批量下载网站资源的一种程序或自动化脚本。

2.爬虫可以做什么

  • 搜索引擎
  • 采集金融数据
  • 采集商品数据
  • 采集竞争对手的客户数据
  • 采集行业相关数据,进行数据分析
  • 刷流量

理论上只要是互联网上的数据是肉眼可见的,那么就可以使用爬虫技术做采集。

3.为什么用 Ptyhon 爬虫

  • PHP:PHP是世界是最好的语言!!但他天生不是做这个的,而且对多线程、异步支持不是很好,并发处理能力弱。爬虫是工具性程序,对速度和效率要求比较高。据说目前PHP改善了效率,但是社区环境这一块还是赶不上Python。
  • Java:生态圈很完善,是Python爬虫最大的竞争对手。但是Java语言本身很笨重,代码量很大。重构成本比较高,任何修改会导致代码大量改动。爬虫经常要修改采集代码。毕竟人生苦短。。。。
  • C/C++:运行效率是无敌的。但是学习和开发成本高。写个小爬虫程序可能要大半天时间。一句话总结,为什么不用C++来开发爬虫程序,因为那是要头发掉光的,那是要死人的。
  • Python:语法优美、代码简洁、开发效率高、支持的模块多。相关的HTTP请求模块和HTML解析模块非常丰富。还有Scrapy和Scrapy-redis框架让我们开发爬虫变得异常简单。而且有非常丰富的资源,另外Python也支持异步,对异步的网络编程也非常友好。以后的方向是异步网络编程,非常适合爬虫程序!!

4.爬虫的分类

通用爬虫

  • 将一个页面中所有的数据获取。
  • 大部分的搜索引擎中应用比较多
  • 通用网络爬虫是捜索引擎抓取系统(Baidu、Google、Sogou等)的一个重要组成部分。主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份。为搜索引擎提供搜索支持。

搜索引擎工作原理:
在这里插入图片描述

  • 第一步:爬取网页
    • 搜索引擎去成千上万个网站爬取数据
  • 第二步:数据存储
    • 搜索引擎通过爬虫爬取到的网页,将数据存入原始页面数据库(也就是文档库)。其中的页面数据与用户浏览器得到的HTML是完全一样的。
  • 第三步:提供检索服务,网站排名
    • 搜索引擎将爬虫抓取回来的页面,进行各种步骤的预处理:中文分词,消除噪音,索引处理。
    • 搜索引擎在对信息进行组织和处理后,为用户提供关键字检索服务,将用户检索相关的信息展示给用户。展示的时候会进行排名。

搜索引擎的局限性:

  • 搜索引擎抓取的是整个网页,不是具体详细的信息。
  • 搜索引擎无法提供针对具体某个客户需求的搜索结果。

聚焦爬虫

  • 将页面中局部的指定的数据进行提取/抓取
  • 注意:聚焦爬虫一定是建立在通用爬虫的基础之上实现
  • 针对通用爬虫的这些情况,聚焦爬虫技术得以广泛使用。聚焦爬虫,是"面向特定主题需求"的一种网络爬虫程序,它与通用搜索引擎爬虫的区别在于: 聚焦爬虫在实施网页抓取时会对内容进行处理筛选,尽量保证只抓取与需求相关的网页数据。

功能爬虫

  • 通过浏览器或者app自动化的操作,实现相关的网页或者app自动化的操作。代替人工在网页或者手机软件中自动执行相关的行为动作。
  • 批量点赞,批量评论,刷单,秒杀…

增量式爬虫

  • 用来监测网站数据更新的情况。以便爬取网站最新更新出来的数据!

分布式爬虫

  • 可以对网站所有的资源使用分布式机群进行分布和联合的数据爬取

5.爬虫的矛与盾(重点)

  • 反爬机制:对应门户网站,网站可以指定相关的机制阻止爬虫对其网站数据的采集
  • 反反爬策略:对应爬虫程序,爬虫可以制定相关的策略将网站的反爬机制破解,从而爬取到指定的数据

6.盗亦有道的君子协议robots

  • Robots协议(也称为爬虫协议、机器人协议等)的全称是“网络爬虫排除标准”(Robots ExclusionProtocol),网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取.
  • 注意,这个协议的存在更多的是需要网络爬虫去遵守,而起不到防止爬虫的功能。

在这里插入图片描述

7.爬虫合法性探究

**爬虫作为一种计算机技术就决定了它的中立性,因此爬虫本身在法律上并不被禁止,但是利用爬虫技术获取数据这一行为是具有违法甚至是犯罪的风险的。**所谓具体问题具体分析,正如水果刀本身在法律上并不被禁止使用,但是用来捅人,就不被法律所容忍了。

或者我们可以这么理解:爬虫是用来批量获得网页上的公开信息的,也就是前端显示的数据信息。因此,既然本身就是公开信息,其实就像浏览器一样,浏览器解析并显示了页面内容,爬虫也是一样,只不过爬虫会批量下载而已,所以是合法的。不合法的情况就是配合爬虫,利用黑客技术攻击网站后台,窃取后台数据(比如用户数据等)。

举个例子:像谷歌这样的搜索引擎爬虫,每隔几天对全网的网页扫一遍,供大家查阅,各个被扫的网站大都很开心。这种就被定义为“善意爬虫”。但是像抢票软件这样的爬虫,对着 12306 每秒钟恨不得撸几万次,铁总并不觉得很开心,这种就被定义为“恶意爬虫”。

  • 爬虫所带来风险主要体现在以下3个方面:

    • 违反网站意愿,例如网站采取反爬措施后,强行突破其反爬措施;
    • 爬虫干扰了被访问网站的正常运营;
    • 爬虫抓取了受到法律保护的特定类型的数据或信息。
  • 那么作为爬虫开发者,如何在使用爬虫时避免进局子的厄运呢?

    • 严格遵守网站设置的robots协议;
    • 在规避反爬虫措施的同时,需要优化自己的代码,避免干扰被访问网站的正常运行;
    • 在使用、传播抓取到的信息时,应审查所抓取的内容,如发现属于用户的个人信息、隐私或者他人的商业秘密的,应及时停止并删除。

    总结:

    可以说在我们身边的网络上已经密密麻麻爬满了各种网络爬虫,它们善恶不同,各怀心思。而越是每个人切身利益所在的地方,就越是爬满了爬虫。**所以爬虫是趋利的,它们永远会向有利益的地方爬行。**技术本身是无罪的,问题往往出在人无限的欲望上。因此爬虫开发者的道德自持和企业经营者的良知才是避免触碰法律底线的根本所在。

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

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

相关文章

第5课 使用openCV捕获摄像头并实现预览功能

这节课我们开始利用ffmpeg和opencv来实现一个rtmp推流端。推流端的最基本功能其实就两个:预览画面并将画面和声音合并后推送到rtmp服务器。 一、FFmpeg API 推流的一般过程 1.引入ffmpeg库:在代码中引入ffmpeg库,以便使用其提供的功能。 2.捕获摄像头…

MongoDB的基本使用

MongoDB的引出 使用Redis技术可以有效的提高数据访问速度,但是由于Redis的数据格式单一性,无法操作结构化数据,当操作对象型的数据时,Redis就显得捉襟见肘。在保障访问速度的情况下,如果想操作结构化数据,…

Spark中的数据加载与保存

Apache Spark是一个强大的分布式计算框架,用于处理大规模数据。在Spark中,数据加载与保存是数据处理流程的关键步骤之一。本文将深入探讨Spark中数据加载与保存的基本概念和常见操作,包括加载不同数据源、保存数据到不同格式以及性能优化等方…

20231231_小米音箱接入GPT

参考资料: GitHub - yihong0618/xiaogpt: Play ChatGPT and other LLM with Xiaomi AI Speaker *.设置运行脚本权限 Set-ExecutionPolicy -ExecutionPolicy RemoteSigned *.配置小米音箱 ()pip install miservice_fork -i https://pypi.tuna.tsinghua.edu.cn/sim…

算法逆袭之路(1)

11.29 开始跟进算法题进度! 每天刷4题左右 ,一周之内一定要是统一类型 而且一定稍作总结, 了解他们的内在思路究竟是怎样的!! 12.24 一定要每天早中晚都要复习一下 早中午每段一两道, 而且一定要是同一个类型, 不然刷起来都没有意义 12.26/27: 斐波那契数 爬…

B3610 [图论与代数结构 801] 无向图的块 题解

B3610 [图论与代数结构 801] 无向图的块 题解 2023 2023 2023,再见。 2024 2024 2024,你好! 解法 其实就是统计点双连通分量的个数。需要注意的是,孤立点在这里不被看作块。本文使用 tarjan 算法来解决这道题。 概念明晰 时间…

机器学习:贝叶斯估计在新闻分类任务中的应用

文章摘要 随着互联网的普及和发展,大量的新闻信息涌入我们的生活。然而,这些新闻信息的质量参差不齐,有些甚至包含虚假或误导性的内容。因此,对新闻进行有效的分类和筛选,以便用户能够快速获取真实、有价值的信息&…

【完整思路】2023 年中国高校大数据挑战赛 赛题 B DNA 存储中的序列聚类与比对

2023 年中国高校大数据挑战赛 赛题 B DNA 存储中的序列聚类与比对 任务 1.错误率和拷贝数分析:分析“train_reads.txt”和“train_reference.txt”数据集中的错误率(插入、删除、替换、链断裂)和序列拷贝数。 2.聚类模型开发:开发…

Unity坦克大战开发全流程——结束场景——失败界面

结束场景——失败界面 在玩家类中重写死亡函数 在beginPanel中锁定鼠标

Redis 分布式锁总结

在一个分布式系统中,由于涉及到多个实例同时对同一个资源加锁的问题,像传统的synchronized、ReentrantLock等单进程情况加锁的api就不再适用,需要使用分布式锁来保证多服务实例之间加锁的安全性。常见的分布式锁的实现方式有zookeeper和redis等。而由于redis分布式锁相对于比…

搭建普罗米修斯Prometheus,并监控MySQL

1.简介 prometheus是一种时间序列的数据库,适合应用于监控以及告警,但是不适合100%的准确计费,因为采集的数据不一定很准确,主要是作为监控以及收集内存、CPU、硬盘的数据。 Prometheus生态系统由多个组件组成,其中许…

积水监测识别摄像机

积水监测识别摄像机是一种利用摄像技术来监测和识别道路、桥梁、隧道等区域积水情况的设备,它可以有效地提供实时的积水监测信息,帮助交通部门和相关单位及时采取应对措施,确保道路交通的畅通和人员安全。 积水监测识别摄像机通过安装在适当位…

STM32F407ZGT6定时器(学习笔记二)

STM32F407ZGT6定时器(学习笔记一)-CSDN博客这篇文章中已经对前三种定时器的使用进行了介绍,本篇文章将介绍(1)输入捕获之计算方波时长,(2)输入捕获之编码器模式。 高级定时器和通用定…

【深入之Java进阶篇】fastjson的反序列化漏洞(详解总结)

✔️ fastjson的反序列化漏 1️⃣典型解析2️⃣拓展知识仓1️⃣AutoType2️⃣AutoType 有何错?3️⃣ 绕过checkAutotype,黑客与fastjson的博弈4️⃣autoType不开启也能被攻击?5️⃣利用异常进行攻击6️⃣AutoType 安全模式? 1️⃣典型解析 当我们使用fastjson进行…

mllib可扩展学习库java api使用

mllib可扩展学习库java api是使用Apache Spark构建的机器学习库,包括分类,聚类,特征提取和预处理等功能。本文将从以下几个方面详细介绍如何使用mllib可扩展学习库java api。 一、数据预处理 数据预处理是机器学习的重要步骤之一&#xff0…

2023.12.28 Python高级-正则表达式

目录 re正则表达式,一种专门用来匹配目标字符串的规则 re.match(),从头匹配一个,无则none re.search(), 不从头匹配返回一个,无则none re.findall(), 不从头匹配,用list返回所有 re分组 re匹配修饰符 re贪婪非贪婪 re切割和替换 re正则表达式,一种专门用来匹配目标字符串…

linux的页缓存page cache

目录 如何查看系统的 Page Cache? 为什么 Linux 不把 Page Cache 称为 block cache? Page Cache 的优劣势 Page Cache 的优势 加快数据访问 减少 IO 次数,提高系统磁盘 I/O 吞吐量 Page Cache 的劣势 由于我们开发的程序要运行的话一般…

redis—List列表

目录 前言 1.常见命令 2.使用场景 前言 列表类型是用来存储多个有序的字符串,如图2-19所示,a、b、C、d、e五个元素从左到右组成 了一个有序的列表,列表中的每个字符串称为元素(element) ,一个列表最多可以存储2^32 - 1 个元素…

功能开发 -- 向埃隆·马斯克学习任务分解

文章目录 马斯克的任务分解软件开发的任务分解可执行的最小单位任务小结 马斯克的任务分解 我们都知道埃隆马斯克(Elon Musk),他既是电动汽车公司特斯拉(Tesla)的创始人,同时还创建了太空探索公司 SpaceX。…

李宏毅 自然语言处理(Voice Conversion) 笔记

前一章笔记:李宏毅 自然语言处理(Speech Recognition) 笔记 引入 什么是voice conversion? 输入一段声音,输出另一段声音,我们希望这两端声音:内容一样,其他方面不一样&#xff08…