【爬虫】开篇词
一、网络爬虫概述
二、网络爬虫的应用场景
三、爬虫的痛点
四、需要掌握哪些技术?
在这个信息爆炸的时代,如何高效地获取和处理海量数据成为一项核心技能。无论是数据分析、商业情报、学术研究,还是人工智能训练,网络爬虫(Web Scraping)都是一项不可或缺的技术。🚀
专栏所有学习笔记基于崔庆才老师的爬虫课程,适用于对 Python 有一定的基础了解,包括 Python 基本的语法和调用逻辑等🔔
教材(崔庆才 Python3 网络爬虫开发实战教程 | 静觅)
一、网络爬虫概述 🎨
网络爬虫(Web Scraping),也称为网页数据抓取,是一种自动化程序,能够按照设定的规则访问网页并提取数据。它就像一只“蜘蛛”,在互联网上爬行并收集有价值的信息。

二、网络爬虫的应用场景🎨
- 搜索引擎:Google、Bing等搜索引擎利用爬虫抓取网页内容并建立索引。
- 电商数据分析:爬取京东、淘宝、亚马逊的商品价格、销量和评论,进行市场分析。
- 社交媒体监控:收集微博、知乎、Twitter等社交平台上的舆情数据,进行热点分析。
- 新闻聚合:抓取各大新闻网站的文章,实现自动化新闻聚合。
- 学术研究:爬取论文数据库,获取研究文献和引用数据。
三、爬虫的痛点🎨
- JavaScript 逆向
很多网站为了保护数据不被轻易爬取到,会选择在前端进行一些保护:例如,将网站前端的代码进行加密或混淆,从而导致一些接口的请求难以直接用程序来模拟,如果要提高爬取效率,势必要对前端代码进行反混淆,进而进行数据爬取
- APP逆向
移动互联网时代,许多公司会选择将数据放置于App端呈现,因此App也已经成了数据的重要载体
为了保护数据,企业会在数据接口中加入加密参数,这些加密参数的逻辑是写在App之中的很多情况下,必须要对 App进行逆向,才能分析出其中的逻辑,从而用爬虫进行模拟爬取
- 爬虫的运维和管理
当爬虫数量较多的时候,如何方便地管理爬虫进程、如何进行定时任务的设置、如何进行扩容、如何进行监控、如何设置科学的报警机制变得非常重要
- IP封禁:
网站检测到同一 IP 访问频繁时,会封禁访问权限。
- 识别验证码
现在很多网站都已经对接了各种各样的验证码,包括拖动、点选验证码等,如果不借助于人工方式识别,利用传统的算法是很难对此类验证码进行识别的,为了提高识别效率,有时候可能需要深度学习对此类验证码进行识别
- 网页的智能解析
网页内容的解析在某些业务上是一件非常繁重的工作,现在很多人都会选择直接使用 XPath 等方式来解析当网站类型变化多样的时候,单纯靠写 XPath 会耗费大量的精力
四、需要掌握哪些技术?🎨
编程语言:Python
以下核心库:
requests:用于发送 HTTP 请求,获取网页内容。BeautifulSoup:解析 HTML 并提取数据。Selenium和Playwright:处理 JavaScript 动态加载页面。Scrapy:高效爬取大规模数据的爬虫框架。
互联网协议
- HTTP/HTTPS:了解 HTTP 请求方法(GET、POST)、状态码(200、404、403)等基础知识。
- User-Agent、Cookies:模拟真实用户访问,绕过网站的反爬机制。
- RESTful API:如何直接调用网站提供的 API 获取数据。
数据解析
- HTML 结构:了解网页的 DOM 结构,熟悉标签的层级关系。
- CSS 选择器:使用
BeautifulSoup和lxml提取特定元素。 - XPath 语法:高效筛选网页中的数据节点。
反爬策略与应对方法
- 识别并绕过常见的反爬机制(IP封锁、验证码、请求频率限制等)。
- 使用代理池、分布式爬虫提高稳定性。
ref: Python爬虫开发学习全教程第二版,爆肝十万字【建议收藏】_python爬虫开发学习全教程第二版,爆肝十万字-CSDN博客
相关文章:
【爬虫】开篇词
一、网络爬虫概述 二、网络爬虫的应用场景 三、爬虫的痛点 四、需要掌握哪些技术? 在这个信息爆炸的时代,如何高效地获取和处理海量数据成为一项核心技能。无论是数据分析、商业情报、学术研究,还是人工智能训练,网络爬虫&…...
C#变量与变量作用域详解
一、变量基础 1. 声明与初始化 声明语法:<数据类型> <变量名>(如 int age; string name)初始化要求: 1、 类或结构体中的字段变量(全局变量)无需显式初始化,默认值…...
深度解析 slabtop:实时监控内核缓存的利器
文章目录 深度解析 slabtop:实时监控内核缓存的利器slabtop 简介基本语法与选项命令语法主要选项详解 实际应用实例示例 1:每 5 秒刷新显示 slab 缓存信息示例 2:按名称排序,每 10 秒刷新一次显示 slab 缓存信息 如何解读 slabtop…...
力扣-股票买入问题
dp dp元素代表最大利润 f[j][1] 代表第 j 次交易后持有股票的最大利润。在初始状态,持有股票意味着你花钱买入了股票,此时的利润应该是负数(扣除了买入股票的成本),而不是 0。所以,把 f[j][1] 初始化为负…...
微服务保护:Sentinel
home | Sentinelhttps://sentinelguard.io/zh-cn/ 微服务保护的方案有很多,比如: 请求限流 线程隔离 服务熔断 服务故障最重要原因,就是并发太高!解决了这个问题,就能避免大部分故障。当然,接口的并发…...
蓝桥杯刷题周计划(第二周)
目录 前言题目一题目代码题解分析 题目二题目代码题解分析 题目三题目代码题解分析 题目四题目代码题解分析 题目五题目代码题解分析 题目六题目代码题解分析 题目七题目代码题解分析 题目八题目题解分析 题目九题目代码题解分析 题目十题目代码题解分析 题目十一题目代码题解分…...
【C++】C++11部分
目录 一、列表初始化 1.1 {}初始化 1.2 initializer_list 二、变量类型推导 2.1 auto 2.2 decltype 三、STL中一些变化 3.1 新增容器 四、lambda表达式 4.1 C98中的一个例子 4.2 lambda表达式 4.3 函数对象与lambda表达式 五、包装器 5.1 function包装器 5.2 fu…...
【分布式】聊聊分布式id实现方案和生产经验
对于分布式Id来说,在面试过程中也是高频面试题,所以主要针对分布式id实现方案进行详细分析下。 应用场景 对于无论是单机还是分布式系统来说,对于很多场景需要全局唯一ID, 数据库id唯一性日志traceId 可以方便找到日志链&#…...
[MERN] 使用 socket.io 实现即时通信功能
[MERN] 使用 socket.io 实现即时通信功能 效果实现如下: MERN-socket.io 实现即时聊天 Github 项目地址:https://github.com/GoldenaArcher/messenger-mern 项目使用了 MERN(MongoDB, Express, React, Node.js) socket.io 实现即时通信功能,并且使用了…...
c#面试题整理6
1.String类能否被继承,为什么 可以看到String类的修饰符是sealed,即是密封类,故不可被继承 2.一个对象的方法是否只能由一个线程访问 不是,但是可通过同步机制,确保同一个时间只有一个线程访问 3.计算2*8ÿ…...
简洁实用的3个免费wordpress主题
高端大气动态炫酷的免费企业官网wordpress主题 非常简洁的免费wordpress主题,安装简单、设置简单,几分钟就可以搭建好一个wordpress网站。 经典风格的免费wordpress主题 免费下载 https://www.fuyefa.com/wordpress...
Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
一:背景 1. 讲故事 前面跟大家分享过一篇 C# 调用 C代码引发非托管内存泄露 的文章,这是一个故意引发的正向泄露,这一篇我们从逆向的角度去洞察引发泄露的祸根代码,这东西如果在 windows 上还是很好处理的,很多人知道…...
【HDLbits--counter】
HDLbits--counter 在IC设计中,counter是十分普遍和重要的设计内容; 题目:基础计数器 module top_module (input clk,input reset,output [9:0] q);always (posedge clk) beginif(reset) beginq < 0;end else beginif(q999) beginq < 0…...
nvm 让 Node.js 版本切换更灵活
有很多小伙伴前端开发进程中,我们常常会遇到不同项目依赖不同版本 Node.js 的情况。我们不可能去卸载重新安装适应的版本去安装依赖或者启动项目。为了避免版本冲突带来的一系列麻烦,在这里给大家推荐一款Node.js 版本管理工具——nvm(Node V…...
双向选择排序算法
一 概述 双向选择排序(又称鸡尾酒选择排序)是选择排序的优化版本,核心改进在于每轮遍历同时确定未排序部分的最小值和最大值,分别交换到序列两端,从而减少遍历轮数。 二 时间复杂度 时间复杂度为(O(n^2)),但实际比较次数约为标准选择排序的 (1/2)。 三 C++实现代…...
美畅物联丨P2P系列之STUN服务器:助力网络穿透
在当今WebRTC等实时通信应用广泛兴起的复杂网络环境下,如何在NAT(网络地址转换)环境中实现高效、稳定的点对点(P2P)连接成为关键。STUN(Session Traversal Utilities for NAT)服务器作为应对这一…...
基于SpringBoot的“积分制零食自选销售平台”的设计与实现(源码+数据库+文档+PPT)
基于SpringBoot的“积分制零食自选销售平台”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统总体结构图 局部E-R图 系统首页界面…...
DeepSeek-V3 技术报告解读
DeepSeek火了有一段时间了,春节假期因为没时间,所以关于deepseek大模型一系列的技术报告一直没看,新年开工后,抽一点时间把之前的坑补起来,关于DeepSeek-V3技术报告的解读已经有很多了,但我相信不同的人去读…...
Spring使用@Scheduled注解的参数详解
在现代Java开发中,定时任务是一个常见的需求。Spring框架提供了Scheduled注解,让我们能够以简单、直观的方式定义和管理这些定时任务。接下来,我们来深入探讨这个注解的使用,以及它的参数都有哪些含义和作用。 Scheduled注解可以…...
力扣72题编辑距离
题目 原理 三个操作对应的操作次数分别是: 插入:在原本的次数上 1删除:在原本的次数上1替换:如果两个位置的字符串一样,则等于原本的次数, 如果不等,在原本的次数上1 去三者的最小值,就是最小的编辑次数 示例 代码 答案是2 package org.example;public class _72_编辑距离 {pu…...
聊天服务器分布式改造
目前的聊天室是单节点的,无论是http接口还是socket接口都在同一个进程,无法承受太多人同时在线,容灾性也非常差。因此,一个成熟的IM产品一定是做成分布式的,根据功能分模块,每个模块也使用多个节点并行部署…...
Python编程中常见的10个案例
文章目录 1. Hello, World!2. 计算斐波那契数列3. 文件读写4. 列表推导式5. 异常处理6. 函数定义与调用7. 类和对象8. 使用模块9. 网络请求10. 数据可视化总结 1. Hello, World! 这是学习任何编程语言时的第一个程序。 代码示例 print("Hello, World!")2. 计算斐波…...
Ardupilot开源无人机之Geek SDK进展2025Q1
Ardupilot开源无人机之Geek SDK进展2025Q1 1. 源由2. 内容汇总2.1 【jetson-fpv】YOLO INT8 coco8 dataset 精度降级2.2 【OpenIPC-Configurator】OpenIPC Configurator 固件升级失败2.3 【OpenIPC-Adaptive-link】OpenIPC RF信号质量相关显示2.4 【OpenIPC-msposd】.srt/.osd…...
linux上安装redis[从0到1]
redis安装步骤 1.下载redis2.新建redis文件夹3.解压安装Redis4.编译5.修改相关配置6.错误 redis下载官网: https://download.redis.io/releases/ 找到自己需要的版本 1.下载redis 选着自己需要下载的版本后,右击选择复制链接,然后利用命令进行下载&am…...
批量删除 Excel 中的空白行、空白列以及空白表格
我们经常会碰到需要删除 Excel 文档表格中的空白行及空白列的场景,有一些空白行或空白列可能我们人工不好识别,因此删除空白行空白列对我们来讲就非常的繁琐,因为我们需要先识别哪些 Excel 文档中包含空白行或者空白列,我们才能够…...
MyBatis SQL 映射文件的作用和结构
MyBatis SQL 映射文件定义了 SQL 语句以及如何将 SQL 语句的参数和结果映射到 Java 对象。 一、 作用 (Purpose) MyBatis SQL 映射文件(通常命名为 XXXMapper.xml)的主要作用是: 定义 SQL 语句: 在 XML 映射文件中编写 SQL 语句…...
MYSQL之创建数据库和表
创建数据库db_ck (下面的创建是最好的创建方法,如果数据库存在也不会报错,并且指定使用utf8mb4) show databases命令可以查看所有的数据库名,可以找到刚刚创建的db_ck数据库 使用该数据库时,发现里面没有…...
react+ts+eslint+prettier 配置教程
1.创建项目 npx create-react-app my-app --template typescript 2.安装依赖 eslint:核心代码质量工具。 prettier:代码格式化工具。 eslint-plugin-prettier:将 Prettier 的规则集成到 ESLint 中。 eslint-config-prettier:…...
ArduPilot开源代码之AP_OSD
ArduPilot开源代码之AP_OSD 1. 源由2. 简介3. 补丁4. 框架设计4.1 启动代码 (AP_OSD::init)4.2 任务代码 (AP_OSD::osd_thread)4.3 实例初始化 (AP_OSD::init_backend) 5. 重要例程5.1 AP_OSD::update_stats5.2 AP_OSD::update_current_screen5.3 AP_OSD::update_osd 6. 总结7.…...
sysbench手动测试OceanBase v4.2.4集群
环境: 1、ocp(sysbench节点) 192.192.103.128 2、ob集群1-1-1 observer 192.192.103.125、192.192.103.126、192.192.103.127,primary_zone:random haproxy 192.192.103.125、192.192.103.126、192.192.103.127 一、安装sysben…...
