当前位置: 首页 > article >正文

爬虫学习————开始

在这里插入图片描述


🌿自动化的思想

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

  • 如新闻的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基础:重要程度⭐⭐

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

相关文章:

爬虫学习————开始

🌿自动化的思想 任何领域的发展原因————“不断追求生产方式的改革,即使得付出与耗费精力越来愈少,而收获最大化”。由此,创造出方法和设备来提升效率。 如新闻的5W原则直接让思考过程规范化、流程化。或者前端框架/后端轮子的…...

Ubuntu18.04搭建samda服务器

一.什么是Samba服务器? Samba服务器是一种基于开源协议实现的网络共享服务软件,主要用于在不同操作系统(如Windows、Linux、Unix)之间实现文件和打印机共享功能。其核心目标是解决跨平台资源共享的兼容性问题,尤其是在…...

K8S扩缩容及滚动更新和回滚

目录: 1、滚动更新1、定义Deployment配置2、应用更新 2、版本回滚1. 使用kubectl rollout undo命令 3、更新暂停与恢复1、暂停更新2、更新镜像(例如,使用kubectl set image命令)3、恢复更新 4、弹性扩缩容1、扩容命令2、缩容命令3…...

一文掌握 LVGL 9 的源码目录结构

文章目录 📂 一文掌握 LVGL 9 的源码目录结构🧭 顶层目录概览📁 1. src/ — LVGL 的核心源码(🔥重点)📁 2. examples/ — API 示例📁 3. demos/ — 综合演示项目📁 4. do…...

2025-05-10-FFmepg库裁切有水印的视频

裁后 代码 import subprocess# 文件路径 input_video_path "bg_video.mp4" output_video_path "output_video_cropped.mp4"# 裁剪视频下方的水印 def crop_video(input_video_path, output_video_path, crop_height):# 获取视频的分辨率def get_video…...

Vue3 路由配置与跳转传参完整指南

目录 一、路由配置 1. 基本路由配置 2. 动态路由配置 3. 可选参数配置 二、路由跳转与传参 1. 声明式导航 (模板中) 2. 编程式导航 (JavaScript中) 三、参数接收 1. 接收动态路由参数 2. 接收查询参数 3. 监听参数变化 四、高级用法 1. 路由元信息 2. 路由守卫控…...

opencv+opencv_contrib+cuda和VS2022编译

本文介绍使用OpenCV和OpenCV_Contrib源码及Cuda进行编译的过程,编译过程中会用到OpenCV、OpenCV_Contrib、CUDA Toolkit、cuDNN、Cmake、VS2022等工具,最终编译OpenCV的Cuda版本。 一、OpenCV下载地址 OpenCV官网下载地址:https://opencv.org/releases…...

《深挖Java中的对象生命周期与垃圾回收机制》

大家好呀!👋 今天我们要聊一个Java中超级重要的话题——对象的生命周期和垃圾回收机制。 一、先来认识Java世界的"居民"——对象 👶 在Java世界里,一切皆对象。就像现实世界中的人一样,每个Java对象也有自…...

C++中extern关键字详解:不同情况下的使用方式

在 C 中,extern 关键字主要用于声明变量或函数是在其他文件中定义的,从而可以在当前文件中使用这些变量或函数。下面详细介绍 extern 修饰全局变量、函数等的用法区别以及注意事项。 修饰全局变量 详细介绍 当 extern 用于修饰全局变量时,…...

【QT】深入理解 Qt 中的对象树:机制、用途与最佳实践

深入理解 Qt 中的对象树:机制、用途与最佳实践 在使用 Qt 编程时,你是否注意到很多对象可以设置“父对象”?比如: QPushButton* btn new QPushButton(parentWidget);这不是简单的层级结构,而是 Qt 强大而优雅的 对象…...

如何利用爬虫获得1688商品详情:实战指南

在电商运营和市场分析中,获取1688商品详情数据是一项重要任务。本文将详细介绍如何利用爬虫技术获取1688商品详情,包括准备工作、爬虫实现步骤以及注意事项。 一、准备工作 (一)注册1688开放平台账号 在1688开放平台注册开发者…...

网工实验——OSPF配置

网络拓扑图 配置 1.为每个路由器配置接口(略)(详细见RIP实验) 2.配置OSPF AR1 [AR1]ospf [AR1-ospf-1]area 1 [AR1-ospf-1-area-0.0.0.1]network 172.16.1.1 0.0.0.0 #精确配置网络,也可以像下面那条命令那样配置 …...

数据库系统概论-基础理论

数据库系统概述: 1、记录:计算机中表示和存储数据的一种格式或方法。 2、数据库(DataBase, DB):数据库是长期储存在计算机内、有组织、可共享的大量数据集合。可为各种用户共享。 3、数据库管理系统(Dat…...

从零开始学习人工智能(Python高级教程)Day6-Python3 正则表达式

一、Python3 正则表达式 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。 在 Python 中,使用 re 模块来处理正则表达式。 re 模块提供了一组函数,允许你在字符串中进行模式匹配、搜索和替换操作。 r…...

Qt开发:项目视图(Item Views)的介绍和使用

文章目录 一、清单视图(List View)1.1 基本概念1.2 使用示例(文字列表)1.3 图标文字(图标模式)1.4 常用设置1.5 完整示例 二、树视图(Tree View)2.1 基本概念2.2 常用类简介2.3 快速…...

“ES7+ React/Redux/React-Native snippets“常用快捷前缀

请注意,这是一个常用的列表,不是扩展提供的所有前缀。最完整和最新的列表请参考扩展的官方文档或在 VS Code 中查看扩展的详情页面。 React (通常用于 .js, .jsx, .ts, .tsx): rfce: React Functional Component with Export Defaultrafce: React Arro…...

keepalived详细笔记

keepalived 是一种基于VRRP(虚拟路由器冗余协议)的高可用解决方案,主要是用于服务器的负载均衡和高可用性的保障,自动将服务切换到备份服务器上,确保业务的连续性。 工作原理: VRRP协议:一组路…...

xLua笔记

Generate Code干了什么 肉眼可见的,在Asset文件夹生成了XLua/Gen文件夹,里面有一些脚本。然后对加了[CSharpCallLua]的变量寻找引用,发现它被XLua/Gen/DelegatesGensBridge引用了。也可以在这里查哪些类型加了[CSharpCallLua]。 public over…...

一周学会Pandas2 Python数据处理与分析-Pandas2数据排序操作

锋哥原创的Pandas2 Python数据处理与分析 视频教程: 2025版 Pandas2 Python数据处理与分析 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili Pandas 2提供了多种灵活的数据排序方法,主要针对 DataFrame 和 Series 对象。 1. 按值排序:s…...

obj = null; 赋值null之前没有其他引用指向obj对象,那么,当obj=null时,会被垃圾回收机制立即回收吗?

不会立即回收。 具体原因是: 赋值 obj null; 后,对象变成“不可达”,符合垃圾回收条件,但垃圾回收器并不会立刻回收它。垃圾回收是CLR自动控制的非确定性过程,什么时候执行回收取决于系统内存压力、GC策略、分代情况…...

lvm详细笔记

LVM简介 逻辑卷管理器,是Linux 系统中用于管理磁盘储存的关键技术。 LVM 则打破了磁盘分区一旦确定,其大小调整往往较为复杂,且难以灵活应对业务变化这种限制,它允许用户将多个物理分区组合卷组。例如,系统中的多个物…...

250505_HTML

HTML 1. HTML5语法与基础标签1.1 HTML5特性1.1.1 空白折叠现象1.1.2 转义字符 1.2 HTML注释1.3 基础标签1.3.1 div标签1.3.2 标题标签1.3.3 段落标签1.3.4 title1.3.5 meta 1.4 html骨架1.4.1 DTD1.4.2 html标签1.4.3 head与body标签 1.5 div标签详解1.5.1 常见class类名 2. 列…...

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

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

【专家库】Kuntal Chowdhury

昆塔尔乔杜里 Kuntal Chowdhury 是 NVIDIA 的 6G 开发者关系经理和技术布道师。他致力于推动与 NVIDIA 平台和工具的开发者和早期采用者生态系统的联系,以促进 6G 研究社区的蓬勃发展。在此之前,他是 BlueFusion, Inc. 的创始人,这是一家创新…...

【代码优化篇】强缓存和协商缓存

强缓存和协商缓存 一、强缓存与协商缓存的区别二、Vue2 前端实现强缓存(静态资源)三、Spring Boot 后端实现协商缓存(动态接口)四、测试缓存效果五、注意事项 一、强缓存与协商缓存的区别 强缓存:浏览器直接读取本地缓…...

电路中的DGND、GROUND、GROUND_REF的区别,VREF、VCC、VDD、VEE和VSS的区别?

目录 1 DGND、GROUND、GROUND_REF的区别 1.1 DGND(Digital Ground) 1.2 GROUND(Ground) 1.3 GROUND_REF(Ground Reference) 1.4 区别 2 VREF、VCC、VDD、VEE和VSS的区别 2.1 VREF(Refere…...

使用AES-CBC + HMAC-SHA256实现前后端请求安全验证

AES-CBC HMAC-SHA256 加密验证方案,下面是该方案二等 优点 与 缺点 表格,适用于文档、评审或技术选型说明。 ✅ 优点表格:AES-CBC HMAC-SHA256 加密验证方案 类别优点说明🔐 安全性使用 AES-CBC 对称加密使用 AES-128-CBC 是可…...

Excel 数据 可视化 + 自动化!Excel 对比软件

各位Excel小能手们!你们有没有过要对比两个Excel表格数据差异,却看得眼睛都花了的经历?其实啊,现在有专门的Excel文件比较软件能帮咱解决这大难题。这软件就是用来快速找出两个或多个Excel表格数据不同之处,还能把修改…...

开始使用WebStorm

目录 开始使用WebStorm打开、检出或创建项目打开项目从版本控制系统检出项目的步骤创建一个空的WebStorm项目在项目中创建新文件的步骤 熟悉WebStorm用户界面找到你要找的代码查找项目符号的调用按名称查找项目符号搜索文本片段转到符号声明历史记录 补全代码实时检查并修复代码…...

【计算机视觉】Car-Plate-Detection-OpenCV-TesseractOCR:车牌检测与识别

Car-Plate-Detection-OpenCV-TesseractOCR:车牌检测与识别技术深度解析 在计算机视觉领域,车牌检测与识别(License Plate Detection and Recognition, LPDR)是一个极具实用价值的研究方向,广泛应用于智能交通系统、安…...