【基础】【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.hqwc.cn/news/315848.html

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

相关文章

Go(Golang)的10个常见代码片段用于各种任务

探索有用的Go编程代码片段 提供“前10名”Go(Golang)代码片段的明确列表是具有挑战性的,因为代码片段的实用性取决于您试图解决的具体问题。然而,我可以为您提供十个常用的Go代码片段,涵盖了各种任务和概念&#xff1…

基于PI控制的PMSM永磁同步电机控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 PMSM数学模型 4.2 矢量控制策略 4.3 PI控制器设计 4.4 控制系统实现 5.完整工程文件 1.课题概述 基于PI控制的PMSM永磁同步电机控制系统simulink建模与仿真。其中,基于PI(…

Python爬虫-爬取当日中药材价格数据

🎈 博主:一只程序猿子 🎈 博客主页:一只程序猿子 博客主页 🎈 个人介绍:爱好(bushi)编程! 🎈 创作不易:喜欢的话麻烦您点个👍和⭐! 🎈…

Pix2Seq 算法阅读记录

目录 前向传播过程 训练过程: 网络结构 前向传播过程 batch_preds--> tgt-->tgtcat(tgt, padding)-->tgt_embedding-->tgt_mask,tgt_padding_mask 以NLP的角度,tgt 代表了 词汇表的长度,encoder部分直接对图像进行处理&#…

Spring Cloud Gateway + Nacos 灰度发布

前言 本文将会使用 SpringCloud Gateway 网关组件配合 Nacos 实现灰度发布&#xff08;金丝雀发布&#xff09; 环境搭建 创建子模块服务提供者 provider&#xff0c;网关模块 gateway 父项目 pom.xml 配置 <?xml version"1.0" encoding"UTF-8"?…

Redis:原理+项目实战——Redis实战3(Redis缓存最佳实践(问题解析+高级实现))

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位大四、研0学生&#xff0c;正在努力准备大四暑假的实习 &#x1f30c;上期文章&#xff1a;Redis&#xff1a;原理项目实战——Redis实战2&#xff08;Redis实现短信登录&#xff08;原理剖析代码优化&#xff09;&#x…

Spring Boot快速搭建一个简易商城项目【四,优化购物车篇】

在之前的基础上继续将购物车进行完善&#xff1a;全选&#xff0c;删除&#xff0c;加减购物车数量 效果&#xff1a; 全选&#xff1a; 计算价格&#xff1a; //计算总价function jisuan(){let total 0;$(".th").each((i,el)>{//each遍历 i下标 el指的是当前的…

跟着动感音乐一起运动起来,健身房的动感单车中文教学

一、教程描述 目前流行的动感单车教程&#xff0c;大多数都是来自国外的&#xff0c;可能听不懂在讲些什么&#xff0c;本套教程是国内的中文教程&#xff0c;现场教学的感觉很好&#xff0c;配上健身房专用的动感单车音乐&#xff0c;很快就会唤醒全身的运动细胞&#xff0c;…

Filezilla使用

服务端 点击安装包 点击我接受 点击下一步 点击下一步 点击下一步 点击安装即可 配置用户组&#xff0c;点击编辑&#xff0c;出现组点击 点击添加&#xff0c;点击确定即可 配置用户&#xff0c;点击编辑点击用户 点击添加&#xff0c;设置用户名&#xff…

linux中最常用的帮助命令

文章目录 linux中最常用的帮助命令此man非man的意思man 的格式man的操作类似于whatis命令类似于apropos命令使用man的小技巧 你是干什么的 whatis拓展 指定目录的定位 whereis使用语法实例单独查找文件 刚刚好合适的 apropos 命令更多信息 linux中最常用的帮助命令 仅个人想法&…

2023-12-27 LeetCode每日一题(保龄球游戏的获胜者)

2023-12-27每日一题 一、题目编号 2660. 保龄球游戏的获胜者二、题目链接 点击跳转到题目位置 三、题目描述 给你两个下标从 0 开始的整数数组 player1 和 player2 &#xff0c;分别表示玩家 1 和玩家 2 击中的瓶数。 保龄球比赛由 n 轮组成&#xff0c;每轮的瓶数恰好为…

IO作业2.0

思维导图 1> 使用fread、fwrite完成两个文件的拷贝 #include <stdio.h> #include <string.h> #include <stdlib.h> int main(int argc, const char *argv[]) {if(argc ! 3) //判断外部参数 {printf("The terminal format is incorrect\n");r…