爬虫学习————开始

在这里插入图片描述


🌿自动化的思想

任何领域的发展原因————“不断追求生产方式的改革,即使得付出与耗费精力越来愈少,而收获最大化”。由此,创造出方法和设备来提升效率。

  • 如新闻的5W原则直接让思考过程规范化、流程化。
  • 或者前端框架/后端轮子的出现,使得构建项目可以自动化,减少了不必要劳动。
  • 爬虫也是如此,主要是为了执行自动化搜集、筛选信息的行为。比如想下载一个网站的所有壁纸图片,人工操作太麻烦,而使用爬虫可以自动化这一系列的操作。

一些计算机思想

  • 自动化思维:所以,作为一个前后端开发者,面对问题,自动化思想总是很有用的,面对问题,下意识思考是否可以自动化会使得效率提升(当然,也要评估性价比)。
  • 性价比思想:不是可以改进效率的方法就值得被推崇,在实际生产中,一些方法理论上可以改进效率,但也要考虑改革的成本。我们的目的是追求最终结果的极致性价比。(这是因为,生产领域必然要考虑除了理论外的其他现实因素,这也是项目/思想能否较好落地的因素。

🍂爬虫的出现与自动化前提

爬虫的出现是对web信息处理这一过程的自动化实现。

自动化的局限

在当下,计算机/设备只能对信息进行规定好的有限的思考和计算,不像人脑可以处理、自主学习。

  • 题外话:(AI大模型看起来像人类,但背后是机器学习的那套,本身不具备思考能力,而是预测能力。在给足了充足的信息后,用户的行为和偏好很容易预测(如,视频推荐算法也是类似思想),由此,远没有自主思考的产生。)

自动化的前提

不是所有解决问题的方法都可以自动化,重复的,有规律的才可以。

  • 举例:爬虫:获取网页信息,下载。/密码爆破:不断输入密码,尝试。

🌿爬虫

🍂定义

网络爬虫,是一种按照一定的规则,自动地在互联网上浏览网页并获取信息的程序或者脚本。

  • 网络爬虫与网络有关,由此要了解计算机网络知识
  • 网页:万维网(一种在互联网上面向大众提供的服务,一个基于超文本的信息检索系统,通过互联网将全球的计算机网络连接起来,使用户能够通过浏览器访问和浏览网页。)
    • 超文本:即把一切资源以web形式呈现,由此,需要了解HTTP相关知识(推荐书籍:《HTTP图解》)

🍂爬虫原理理解

● 一般流程

网络(互联网连接)[PC完成] ——————> 服务器连接[PC、浏览器完成] ——————> HTTP请求发起[浏览器完成] ——————> HTTP请求发送给服务器[PC完成] ——————> 服务器返回包接收、拆包[PC完成] ——————> web内容分析、渲染、展现[浏览器完成]

解释

PC连接上互联网后,再连接到服务器,向它发起HTTP服务请求,服务器在没问题的情况下返回它所需要的内容。

  • 连接互联网有PC的网络模块与系统应用完成,而不是它上面的第三方应用。没有PC的网络模块支持,应用也上不了网。即Pc网络模块(硬件)才是一切的基础。
  • 常见使用过程中,发起请求的功能由浏览器代替用户执行,从而生成HTTP请求。而爬虫要自己发起,由此要编写一个可以像服务器发送HTTP请求的代码喽。
  • 请求的接收:常见的也是由PC接收后解析。而爬虫只要有用的信息,所以自己自定义解析规则,写一个自动化解析的代码。

● 使用了爬虫的自动化流程

两种方式对比总结:

  • 手动: 手动发起HTTP请求,依靠浏览器解析得到的web内容,用户直接观看。需要用户一次次的点击。
  • 爬虫: 爬虫自动发起HTTP请求,自动接收内容,自动处理拆包,自动分析提取需要的内容,自动存储内容。能用循环实现自动化重复操作,不需要人一个个点击且比人快得多

本质就是把手动的全部过程都用代码表达了,而写加上了筛选规则和循环,使得爬虫可以不用手动控制(因为循环)的自主完成对内容的筛选(因为筛选规则)。

● 配套图

服务器与PC(python爬虫在PC上是如何实现的:相关库以及作用)

  • 解释了爬虫流程:发送HTTP请求——>解析web内容——>筛选内容——>存储内容
  • 以及PC与服务器上的HTTP服务的交互
    在这里插入图片描述

anconda的原理
在这里插入图片描述

python进程下的爬虫

  • 即本质是进程间的交互,服务器提供HTTP服务的进程与Pc上爬虫进程的交互
  • 涉及到网络分层模型
  • 服务器提供的服务多种多样,除了HTTP服务还有SQL数据库服务。即PC可以使用服务器提供的多种服务,根据提供的服务不同,应用层发送的内容不同(万维网服务为web数据,数据库服务为数据库文件…)
    在这里插入图片描述

🍂爬虫要注意啥

法律法规

  • 合法性:不是所有资源都可以爬取,要遵守相关法律法规,保护自己也保护他人
  • 恶意爬虫:指不遵守法规且用技术来掩盖自己的踪迹,使得追查起来困难或者不可行

爬虫与背后的流量请求

提供服务要消耗资源(电费、设备维护、域名、IP费用…),而每次的爬虫请求会与目标服务器交互,由此产生消耗,同时也会占据资源,影响正常用户的使用(最典型的例子:12306抢票)。由此,会给服务商提供负担。

  • 无论是作为服务商或者用户,过度使用爬虫对双方都毫无意义,只有负向收益。而且,使用爬虫爬取没用信息对程序员也没啥用啊(😏毕竟要网络攻击有别的方法)

🍂一个入门例子

使用爬虫爬取豆瓣电影排行榜,感受自动化过程(本站就有教程,自行搜索,关键在于配置python环境,代码复制下来就能跑)


🌿学习爬虫的准备

🍂环境配置

本质上,你需要了解一种图灵完备语言(指的是python、Java…),但常见的用python,变成语言各有所长,而python在这方面最好用。
所以,下载python并且下载相关库

  • 推荐内容
    • anaconda(管理多版本python、隔离环境,允许不同项目支持不同python版本、机器学习初学的好软件)
    • 环境变量(了解环境变量的作用)
    • 理解文件相对路径、绝对路径以及CMD当前运行位置不同对应的不同影响

🍂理论知识

● 最基础前提

  • 基本的网络知识:重要程度⭐⭐⭐⭐⭐

爬虫的精髓所在,在得到文件后就好处理(你瞪眼法人工分析也可以😏),关键是如何请求,如何得到。所以,这部分最重要。

● 次要基础

  • HTTP协议基础:重要程度⭐⭐⭐

了解这个,才能在代码里模拟浏览器发送HTTP请求,实现发送请求自动化(一般是浏览器检测用户点击一次才发一次请求,我们要让这个过程自动化)

● 最末流基础

  • Python编程基础:重要程度⭐⭐

至少有编程语言基础,python就可以边写爬虫边学了。(不然还要建立编程语言的基础,学习爬虫会困难一点)

  • HTML和CSS基础:重要程度⭐⭐

因为爬虫代码涉及到对这些元素的分析,不懂标签,得到文件也看不懂,更别提爬取了

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

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

相关文章

每天五分钟机器学习:KTT条件

本文重点 在前面的课程中,我们学习了拉格朗日乘数法求解等式约束下函数极值,如果约束不是等式而是不等式呢?此时就需要KTT条件出手了,KTT条件是拉格朗日乘数法的推广。KTT条件不仅统一了等式约束与不等式约束的优化问题求解范式,KTT条件给出了这类问题取得极值的一阶必要…

leetcode0829. 连续整数求和-hard

1 题目: 连续整数求和 官方标定难度:难 给定一个正整数 n,返回 连续正整数满足所有数字之和为 n 的组数 。 示例 1: 输入: n 5 输出: 2 解释: 5 2 3,共有两组连续整数([5],[2,3])求和后为 5。 示例 2: 输入: n 9 输出: …

window 显示驱动开发-线性伸缩空间段

线性伸缩空间段类似于线性内存空间段。 但是,伸缩空间段只是地址空间,不能容纳位。 若要保存位,必须分配系统内存页,并且必须重定向地址空间范围以引用这些页面。 内核模式显示微型端口驱动程序(KMD)必须实…

Cadence 高速系统设计流程及工具使用三

5.8 约束规则的应用 5.8.1 层次化约束关系 在应用约束规则之前,我们首先要了解这些约束规则是如何作用在 Cadence 设计对象上的。Cadence 中对设计对象的划分和概念,如表 5-11 所示。 在 Cadence 系统中,把设计对象按层次进行了划分&#…

ScaleTransition 是 Flutter 中的一个动画组件,用于实现缩放动画效果。

ScaleTransition 是 Flutter 中的一个动画组件,用于实现缩放动画效果。它允许你对子组件进行动态的缩放变换,从而实现平滑的动画效果。ScaleTransition 通常与 AnimationController 和 Tween 一起使用,以控制动画的开始、结束和过渡效果。 基…

深入解析:如何基于开源p-net快速开发Profinet从站服务

一、Profinet协议与软协议栈技术解析 1.1 工业通信的"高速公路" Profinet作为工业以太网协议三巨头之一,采用IEEE 802.3标准实现实时通信,具有: 实时分级:支持RT(实时)和IRT(等时实时)通信模式拓扑灵活:支持星型、树型、环型等多种网络结构对象模型:基于…

m个n维向量组中m,n的含义与空间的关系

向量的维度与空间的关系&#xff1a; 一个向量的维度由其分量个数决定&#xff0c;例如 ( n ) 个分量的向量属于 Rn空间 。 向量组张成空间的维度&#xff1a; 当向量组有 ( m ) 个线性无关的 ( n ) 维向量时&#xff1a; 若 ( m < n )&#xff1a; 这些向量张成的是 Rn中的…

excel大表导入数据库

前文介绍了数据量较小的excel表导入数据库的方法&#xff0c;在数据量较大的情况下就不太适合了&#xff0c;一个是因为mysql命令的执行串长度有限制&#xff0c;二是node-xlsx这个模块加载excel文件是整个文件全部加载到内存&#xff0c;在excel文件较大和可用内存受限的场景就…

Python 爬虫基础入门教程(超详细)

一、什么是爬虫&#xff1f; 网络爬虫&#xff08;Web Crawler&#xff09;&#xff0c;又称网页蜘蛛&#xff0c;是一种自动抓取互联网信息的程序。爬虫会模拟人的浏览行为&#xff0c;向网站发送请求&#xff0c;然后获取网页内容并提取有用的数据。 二、Python爬虫的基本原…

Spring Security 深度解析:打造坚不可摧的用户认证与授权系统

Spring Security 深度解析&#xff1a;打造坚不可摧的用户认证与授权系统 一、引言 在当今数字化时代&#xff0c;构建安全可靠的用户认证与授权系统是软件开发中的关键任务。Spring Security 作为一款功能强大的 Java 安全框架&#xff0c;为开发者提供了全面的解决方案。本…

【物联网】基于树莓派的物联网开发【1】——初识树莓派

使用背景 物联网开发从0到1研究&#xff0c;以树莓派为基础 场景介绍 系统学习Linux、Python、WEB全栈、各种传感器和硬件 接下来程序猫将带领大家进军物联网世界&#xff0c;从0开始入门研究树莓派。 认识树莓派 正面图示&#xff1a; 1&#xff1a;树莓派简介 树莓派…

第21节:深度学习基础-激活函数比较(ReLU, Sigmoid, Tanh)

1. 引言 在深度学习领域,激活函数是神经网络中至关重要的组成部分 它决定了神经元是否应该被激活以及如何将输入信号转换为输出信号 激活函数为神经网络引入了非线性因素,使其能够学习并执行复杂的任务 没有激活函数,无论神经网络有多少层,都只能表示线性变换,极大地限…

Fiori学习专题三十:Routing and Navigation

实际上我们的页面是会有多个的&#xff0c;并且可以在多个页面之间跳转&#xff0c;这节课就学习如何在不同页面之间实现跳转。 1.修改配置文件manifest.json&#xff0c;加入routing&#xff0c;包含三个部分&#xff0c;config,routes,targets; config &#xff1a; routerC…

【HarmonyOS NEXT+AI】问答05:ArkTS和仓颉编程语言怎么选?

在“HarmonyOS NEXTAI大模型打造智能助手APP(仓颉版)”课程里面&#xff0c;有学员提到了这样一个问题&#xff1a; 鸿蒙的主推开发语言不是ArkTS吗&#xff0c;本课程为什么使用的是仓颉编程语言&#xff1f; 这里就这位同学的问题&#xff0c;统一做下回复&#xff0c;以方便…

Booth Encoding vs. Non-Booth Multipliers —— 穿透 DC 架构看乘法器的底层博弈

目录 &#x1f9ed; 前言 &#x1f331; 1. Non-Booth 乘法器的实现原理&#xff08;也叫常规乘法器&#xff09; &#x1f527; 构建方式 ✍️ 例子&#xff1a;4x4 Non-Booth 乘法器示意 &#x1f9f1; 硬件结构 ✅ 特点总结 ⚡ 2. Booth Encoding&#xff08;布斯编码…

GET请求如何传复杂数组参数

背景 有个历史项目&#xff0c;是GET请求&#xff0c;但是很多请求还是复杂参数&#xff0c;比如&#xff1a;参数是数组&#xff0c;且数组中每一个元素都是复杂的对象&#xff0c;这个时候怎么传参数呢&#xff1f; 看之前请求直接是拼接在url后面 类似&items%5B0%5D.…

iOS App 安全性探索:源码保护、混淆方案与逆向防护日常

iOS App 安全性探索&#xff1a;源码保护、混淆方案与逆向防护日常 在 iOS 开发者的日常工作中&#xff0c;我们总是关注功能的完整性、性能的优化和UI的细节&#xff0c;但常常忽视了另一个越来越重要的问题&#xff1a;发布后的应用安全。 尤其是对于中小团队或独立开发者&…

A* (AStar) 寻路

//调用工具类获取路线 let route AStarSearch.getRoute(start_point, end_point, this.mapFloor.map_point); map_point 是所有可走点的集合 import { _decorator, Component, Node, Prefab, instantiate, v3, Vec2 } from cc; import { oops } from "../../../../../e…

深度解析动态IP业务核心场景:从技术演进到行业实践

引言&#xff1a;动态IP的技术演进与行业价值 在数字化转型加速的今天&#xff0c;IP地址已从单纯的网络标识演变为支撑数字经济的核心基础设施。动态IP作为灵活高效的地址分配方案&#xff0c;正突破传统认知边界&#xff0c;在网络安全防护、数据价值挖掘、全球业务拓展等领…

MySQL 性能调优:从执行计划到硬件瓶颈

MySQL 性能调优&#xff1a;从执行计划到硬件瓶颈 一、性能调优的宏观视角与核心挑战 在数字化浪潮下&#xff0c;企业数据量呈指数级增长&#xff0c;MySQL 作为主流关系型数据库&#xff0c;面临着巨大的性能压力。某电商平台日均订单量突破千万&#xff0c;高峰期数据库响…