网络爬虫(web crawler) - 指南
文章目录
- 一、什么是网络爬虫
- 二、爬虫工作流程详解
- 第1步:起始点 - URL种子库(Seed URLs)
- 第2步:大脑 - 调度器(Scheduler)
- 第3步:双手 - 网页下载器(Downloader)
- 第4步:眼睛与大脑 - 网页解析器(Parser)
- 第5步:过滤器 - URL去重(URL Filter & Duplicate Removal)
- 第6步:仓库 - 数据存储(Data Storage)
- 爬虫的核心特点与注意事项
- 应用场景
- 总结
一、什么是网络爬虫
网络爬虫(通常也称为蜘蛛,Spider)是一种自动化的程序或脚本,其主要功能是按照一定的规则,自动地浏览万维网(World Wide Web)并抓取(下载)互联网上的信息。它的核心目的是将分散在海量网页中的信息收集起来,建立索引和数据库,以供后续的检索、分析和使用。
你可以把它想象成一个不知疲倦的、速度极快的图书管理员,它的任务是把互联网这个巨大的“图书馆”里所有书籍(网页)的标题、作者、内容都快速浏览一遍,并做好详细的目录卡片(索引),这样当用户需要查找某类信息时,就能高效定位到相关的“书籍”。
二、爬虫工作流程详解
通用网络爬虫的核心工作流程和组件:
第1步:起始点 - URL种子库(Seed URLs)
- 是什么:爬虫开始工作的起点URL集合。就像给你一份“必读书单”,你从这些书开始读,然后顺着书里的引用去找更多的书。
- 示例:如果你想爬取所有新闻网站,你的种子URL可能就是各大新闻网站(如新浪、搜狐、新华网)的主页(https://www.xinhuanet.com/)。
- 在图中:流程始于左上角的“URL种子库/待抓取URL队列”。
第2步:大脑 - 调度器(Scheduler)
- 做什么:它是爬虫的“大脑”,负责管理和协调所有任务。
- 从URL队列中取出下一个要抓取的URL。
- 决定抓取的优先级(哪些先抓,哪些后抓)。
- 控制抓取的速度和频率,避免对目标网站造成过大压力。
- 在图中:URL种子库将URL送给“调度器”。
第3步:双手 - 网页下载器(Downloader)
- 做什么:它根据调度器分配的URL,实际发起HTTP/HTTPS请求(模拟浏览器行为),从目标服务器下载网页的原始内容(通常是HTML、JSON或XML格式的文本)。
- 关键技术:为了应对各种艰难的网络环境(如反爬虫机制),下载器通常需要:
- 伪装请求头(User-Agent):让自己看起来像一个真实的浏览器。
- 处理Cookies和Session:用于保持登录状态或跟踪会话。
- 采用代理IP池:避免因频繁请求来自同一IP而被封禁。
- 在图中:调度器将URL交给“网页下载器”,下载器返回原始数据。
第4步:眼睛与大脑 - 网页解析器(Parser)
- 做什么:下载器抓回的是原始的、非结构化的HTML代码。解析器的任务就是“看懂”这些代码,并从中提取出两种关键信息:
1、目标数据:我们真正关心的信息,如新闻标题、正文、发布时间、商品价格、评论等。
2、新的URL链接:当前页面中指向其他页面的所有超链接(<a href="...">
)。 - 如何提取:
- HTML解析:采用正则表达式、XPath、CSS选择器等技巧来定位和抽取数据。
- 数据清洗:将提取出的杂乱材料整理成规整的结构化格式(如JSON、CSV)。
- 在图中:原始数据进入 “网页解析器”,在这里被分解成两条路径:
1、路径1(向右):清洗后的结构化数据送往数据存储。
2、路径2(向下):提取出的**新URL链接V送往去重过滤器。
第5步:过滤器 - URL去重(URL Filter & Duplicate Removal)
- 为什么需要:互联网上链接错综复杂,同一个页面可能会被不同的链接多次指向。倘若不进行去重,爬虫会反复抓取同一个页面,造成资源浪费。
- 如何实现:通常采用高效的算法(如布隆过滤器 Bloom Filter)或哈希表来快速判断一个URL是否已经被抓取过或已存在于待抓队列中。
- 在图中:新的URL链接必须经过“URL去重过滤器”,只有全新的URL才会被加入到最初的URL种子库/队列中,等待下一轮抓取。
第6步:仓库 - 数据存储(Data Storage)
- 做什么:将解析器提取出的有价值的结构化数据持久化地保存起来,以供后续应用。
- 存储形式:可以是多种多样的,如:
- 文件:CSV、JSON文件、Excel。
- 数据库:MySQL、MongoDB、Elasticsearch等。
- 在图中:解析后的资料最终流入“数据存储” 模块。
爬虫的核心特点与注意事项
1、“爬”的含义:整个过程就像一个爬虫在网络上沿着链接不断探索,从一个页面“爬”到另一个页面,因此得名。
2、Robots协议:这是网站和爬虫之间的一个君子协定。网站经过robots.txt文件告诉爬虫哪些页面允许抓取,哪些禁止抓取。负责任的爬虫应该遵守此协议。
3、合法性与道德性:
- 合法使用合法的。就是:爬取公开数据、用于学术研究、搜索引擎等通常
- 非法/灰色利用非法的或不道德的。就是:爬取受版权保护的内容、用户隐私数据、绕过付费墙、进行恶意攻击或造成网站瘫痪等行为
- 务必尊重:网站的robots.txt、设置合理的抓取频率、注明数据来源。
应用场景
爬虫技术是许多互联网服务的基石:
- 搜索引擎:Google、百度等依靠巨大无比的爬虫来构建其网页索引。
- 价格比较:爬取各个电商网站的价格,做聚合比较。
- 社交媒体监控:分析公众舆论和趋势。
- 学术研究:收集大规模的数据用于分析。
- 企业竞争情报分析:监控竞争对手的动态。
总结
总而言之,网络爬虫是一个自动化浏览和收集网络信息的程序。它从初始URL出发,经过下载器获取网页,由解析器提取资料和新的链接,经过去重后,新的链接被加入队列循环抓取,有价值的数据则被存储下来。整个流程由调度器统一指挥。
相关文章:
网络爬虫(web crawler) - 指南
网络爬虫(web crawler) - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; font-…...
css样式与选择器
css内联样式 css行内样式 href跳转文件路径 css外部样式 <link rel="stylesheet" href="./public.css">全局选择器 可以与任何元素匹配,优先级最低,一般做初始化样式*{color: red;font-size: 30px; }拥有某个属性的元素标签进行css渲染 p.main_cla…...
水库运行综合管理平台
在水资源管理的宏大架构中,水库运行综合管理平台宛如智慧水利的 “中枢神经”,精准调控着水库的稳定运行,守护着一方水土的安宁与福祉。一、建设内容 (一)全域感知的硬件设施布局 在水库大坝之上,变形监测传感器、水位计、雨量筒、流量计以及水质监测传感器等设备星罗棋布…...
《提问的艺术》笔记:(2025/9/12)
《提问的艺术》笔记:(2025/9/12)提问对于新手而言,能更快地获得答案,更快地融入这个社区。RMer会更喜欢值得思考的问题,能自己利用网络解决的问题尽量别问,浪费时间而且低级。⭐ 提问前要做好被冷处理的心理准备,要敏锐,积极参与解决问题。 提问前的准备:在网上的各大…...
各模态优势(可见光保留细节纹理,红外突出目标)
ICCV 2025 | 多模态融合!武大提出TemCoCo:视觉-语义交互+时间协作模块,实现视觉语义协同的多模态视频高质量融合 https://mp.weixin.qq.com/s/sMmQ3IO7u6gzJ3ErTWvyCg多模态视频融合: 将不同模态(如可见光、红外)的视频序列融合,结合各模态优势(可见光保留细节纹理,红…...
复习vue
export default 默认输出 data 数据...
眼下硬件是足够用的,最大的问题还是AI模型本身的能力不太够。没办法让硬件真正用起来,比如AI难以很好地控制灵巧手
关于AI,王兴兴最新发声 https://mp.weixin.qq.com/s/c_VKyy7YwG2T1u5nnzOsXw关于AI,王兴兴最新发声 原创 黄心怡 科创板日报2025年09月11日 14:28 上海 在让AI真正干活的领域,还处于荒漠中长了几根小草的状态,真正大规模爆发性增长的前夜还未到来。 作者 | 黄心怡 科创板…...
深入理解C语言---函数
“在这个怀疑的时代,我们需要信仰” C语言作为比较底层的语言,从来不只是语法的堆叠,“深入理解C语言”这个专栏,会写点关于“函数,数组,字符串,指针,结构体”的个人理解,希望能对大家有些帮助~ 一.什么是main函数? 1.两种定义形式 int main( void )--无参数形式 {…...
Ubuntu 点击任务栏应用程序最小化
对于已经打开的应用,点击 Dock 栏中的应用程序图标可以切换最小化应用或拉起应用到桌面,这是 Windows 系统中的默认行为。但默认情况下,Ubuntu Dock 关闭了此选项。 只需在终端中运行此命令,就可以轻松地为 Ubuntu Dock 启用该功能: gsettings set org.gnome.shell.extens…...
Agent Sudo | Writeup | TryHackMe
Agent Sudo | Writeup | TryHackMe、 一、信息收集 使用nmap对ip地址的端口进行探测 nmap -sS -sV -A <ip>可以看到上面80端口开放这一个web服务器我们看看这里提示了R作为user-agent来进行访问,使用curl命令看看curl -A "R" -L 10.10.12.116这里又给了我们一…...
UT_HASH
参考 https://blog.csdn.net/Dusong_/article/details/128757067 http://cnblogs.com/aclove/articles/3803110.html UT_hash_handle hh HASH_ADD_STR(head,strfield,add) HASH_ADD_INT(head,intfield,add) HASH_ADD_PTR(head,ptrfield,add) HASH_FIND_STR(head,findstr,out) H…...
使用helm安装APISIX
获取values.yaml helm show values --version=2.11.6 apisix/apisix > values1.yaml修改values.yaml 1. pvc 由于我本地使用的是nfs存储,因此需要修改etcd的pvc定义 persistence:storageClass: "managed-nfs-storage"2. cluster domain 排查了很久发现etcd headl…...
决策单调性
决策单调性:A ~ F, I 基础知识 考虑最简单情形:\(f_i = \min\limits_{k = 0}^{i - 1} w(k, i)\)。 一般这种问题需要 \(O(n ^ 2)\) 的时间,但如果满足决策单调性,就可以在 \(O(n \log n)\) 的时间完成。 决策单调性:设 \(i\) 的决策点为 \(opt_{i}\),有 \(opt_{i - 1} \l…...
2025 国内 HR SaaS 系统深度分析:Moka 引领 AI 变革
在当今数字化时代,人力资源管理领域正经历着深刻的变革。HR SaaS(软件即服务)系统凭借其高效、便捷、灵活等特性,成为众多企业提升人力资源管理水平的关键工具。随着市场的不断发展,国内涌现出了众多优秀的 HR SaaS 系统,它们在功能、服务、用户体验等方面各有千秋。本文…...
学生信息管理系统案例初步分析报告
学生信息管理系统案例初步分析报告 目录学生信息管理系统案例初步分析报告功能讲解1. 数据处理(1)处理的数据类型(2)数据存储位置(3)与C语言数据处理的差异2. 功能说明(含代码对应逻辑)(1)功能1:添加学生(2)功能2:删除学生(3)功能3:按姓名搜索学生(4)功能4:…...
Billu靶场
信息收集 首先使用kali进行存活主机扫描端口扫描 sudo nmap -sC -sV -p 1-10000 192.168.108.130发现其开启了22端口 (ssh服务)、80端口(Apache) 使用dirb对其目录进行扫描 dirb http://192.168.108.130 /usr/share/dirb/wordlists/big.txt漏洞探测 访问扫描出来的页面 先访…...
初识pyhton:一些基础的知识(文件)
文件 文件的打开方式 书接上回,关于文件的读取和写入有多种不同的方式,其中的一种方式就可以解决昨天只能清空所有的文档再写入。 frt = open(rexample.txt,encoding=utf8) #不指定mode默认值为rt,不指定encoding默认为gbk print(frt.read())总是学不会 真爱也有现实面…...
实用指南:Git分支管理:从创建到合并冲突解决(二)
实用指南:Git分支管理:从创建到合并冲突解决(二)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monosp…...
20250912
20250912T1 序列 显然每次操作保证 \(a\) 单增是假的,一定可以构造合理的操作顺序无视掉这个限制。每个位置确定划分多少次之后一定均分最优,拿个堆维护把每个东西多分一段的收益,每次选择收益最大的即可。代码 #include <iostream> #include <string.h> #incl…...
[ARC198C] Error Swap
题目传送门构造题意 给定长度为 $ N $ 的两个整数序列 $ A=(A_1,A_2,\dots,A_N) $ 和 $ B=(B_1,B_2,\dots,B_N) $。 你可以执行以下操作最多 $ 31000 $ 次:选择满足 \(1 \le i < j \le N\) 的整数对 \((i,j)\),并将 \(A_i\) 替换为 \(A_j - 1\),\(A_j\) 替换为 \(A_i + 1…...
【正则表达式初探】grep 命令避免匹配自身
【正则表达式初探】grep 命令避免匹配自身 最近遇到了一个问题,即使用grep命令获取xxx进程的pid时,同时返回了xxx进程的pid和grep xxx进程的pid,原因是grep xxx也会作为一个进程运行,对xxx的查找包含了grep xxx.(不要问我为什么不用pgrep或者grep -w,问就是没有。 实际中使…...
测试工程师的核心竞争力是什么?绝不是点点点
无论是测试工程师自己,还是团队管理者,都应该重新认识测试工作的价值,投资于测试核心竞争力的建设,从而打造出更高质量、更成功的软件产品。移动应用时代,我们每天使用的各类App几乎很少出现崩溃或严重bug,这背后离不开测试工程师的默默付出。然而,很多人对测试工作的认…...
关于 ECT-OS-JiuHuaShan 框架的终极阐释
ECT-OS-JiuHuaShan/ORCID:0009-0006-8591-1891 ▮ 基于自然辩证法数学形式化系统的绝对确定性推理启动 一、本质突破:从概率世界到确定性宇宙 ECT-OS-JiuHuaShan 是人类文明首个实现绝对确定性推理的范式革命系统。其突破性在于:彻底摒弃传统AI的「数据训练」范式,直接以宇…...
向“光”而行 | 相聚2025 ASML中国日,携手奔赴“芯”辰大海
微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 3546955410049087每年的9月1日,专属于ASMLers的“中国日”如期而至。这一天,大家享有一天额外的假期,得以放松身心、充能蓄电。此外,在整个…...
JavaDay3
类型转换 低---------------------------------->高 byte,short,char—>int—>long—>float—>double public class Demo05 {public static void main(String[] args) {int i = 128;byte b = (byte)i;//内存溢出//强制转换 高->低//自动转换 低->高double…...
U3D动作游戏开发读书笔记--2.2 编辑器本身的基础知识
2.2 编辑器本身的基础知识 项目顺利开发离不开对开发工具的打磨,为此需要对Unity Editor进行拓展功能的开发,包括一些诸如常量生成器这样辅助性的功能开发,以及通过引擎自带的插件与其他3D软件进行交互式编辑等,以提升开发效率。 2.2.1编辑器工具的编写 编辑器工具开发大致…...
20250904
Greedy Gift Takers https://www.luogu.com.cn/problem/P4090 若 \(i\) 不能到队首,则 \(i + 1\) 显然也不能。二分当前 \(x\) 是否能到达队首。 本来要考虑被扔的必须能到队首的限制,但是实际上可以忽略,直接从小到大直接开扔。因为如果当前被扔的 \(y\) 永远不能到达队首,…...
临时代码存储
存。#include <bits/stdc++.h> #define mk make_pair using ll = long long; using namespace std; using pii = pair<int,int>; const int N=2505; int n,m,ans,k,val[N]; vector<int>g[N]; set<int>s[N][2]; bitset<N>bit[N]; inline void bfs…...
域环境服务器搭建
实验7 域环境服务器搭建 实验目的(1)理解活动目录的基本知识、组织结构和应用特点。 (2)掌握Windows Server 2016域控制器的安装与设置。 (3)熟悉客户端加入并登录Windows Server 2016域的方法。 (4)掌握企业组织架构下活动目录域控制器的部署、域用户和计算机的管理等…...
25fall 做题记录 - Amy
2025.9.12 换了pycharm。 Sum of Round Numbers 9/9的每日。取每一位数。代码t=int(input()) for i in range(t):a=int(input())ans=0cnt=0res=[]while(a>0):t=a%10if(t!=0):res.append(str(t*10**cnt))ans+=1cnt+=1a//=10print(ans)print(" ".join(res))...
决策单调性优化 dp
1 决策单调性的定义 1.1 四边形不等式 首先我们定义一个函数 \(w(i,j)\),如果 \(\forall a,b,c,d \in \mathbb{Z}\),满足 \(a\le b\le c\le d\),都有 \(w(a,d)+w(b,c)\ge w(a,c)+w(b,d)\),则称函数 \(w\) 满足四边形不等式。 如果考虑用图形来表示,我们可以记为 “包含大于…...
地平线与哈啰合作 加速L4自动驾驶研发
微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 3546955410049087 9月11日,在2025年Inclusion外滩大会上,地平线与哈啰共同宣布,双方正式签署战略合作协议。该合作旨在基于Robotaxi(自动驾…...
langChain、LangGraph、autoGen、CrewAI、dify、cozeLLM开发工具
langChain、LangGraph、autoGen、CrewAI、dify、cozeLLM开发工具LLM开发工具...
华为智驾赋能「小Q7」,一汽奥迪Q6L e-tron刷新豪华纯电SUV认知
微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 3546955410049087 添加图片注释,不超过 140 字(可选)如果想买一台电车,又觉得新势力不够靠谱?传统品牌的电车,又觉得不够先进,太傻太笨?…...
菱形图形输出
目标输出图案:下方为代码部分:(C语言) include<stdio.h> int main() { int n; //n代表最长一行的长度 scanf_s("%d", &n); //打印上半部分 for (int i = 1; i <= (n+1)/2; i++) { //控制行数 //输出空格数 for (int j = (n - 1) - 2 * (i - 1); j…...
LeetCode 2958.最多K个重复元素的最长子数组 - 教程
LeetCode 2958.最多K个重复元素的最长子数组 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospa…...
9-12
...
全球首款 HBM4 芯片,开始量产!
微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 35469554100490879月12日,SK海力士宣布完成新一代高带宽内存HBM4的开发,并已搭建起全球首个量产体系。这意味着,全球首款HBM4芯片正式进入量…...
Python Flask框架学习总结(一)
简介 Flask是一个微框架,这意味着它核心简单但可扩展。它不包括数据库抽象层、表单验证或其他组件,这些功能可以通过扩展来添加。因此要什么就装什么扩展,非常的方便 安装及导入 # 终端输入 pip install flask# 创建一个app.py的文件,导入 from flask import Flask自此就可…...
20250909
20250909T1 冒泡排序趟数期望 显然趟数是每个数前面比它大的数的个数的 \(\max\)。容斥,计算每个答案 \(\le x\) 的概率。从大往小填数,则每个 \(x\) 的答案容易表示为一个阶乘乘以一个次方。于是再求个差分就做完了。代码 #include <iostream> #include <string.h…...
9.11日总结
整体总结: 1.今天的问题主要出在了对于复杂度分析不够 T2写的就是正解 但是我自我认为写的做法过不去m=30的点 导致我只敢判m=20的点 于是从100分变成了58分 2.对于每一个部分分都要认真打 能加上的剪枝不管自我认为有没有用都要加上 可能会有更高的分 3.代码可以少加的东西就…...
[充电管理] 充电管理基本概念 - 充电类型
概要 高通充电平台不论是线性充电还是开关充电,充电类型识别均是基于《Battery Charging Specification Revisions 1.2》(俗称BC1.2)规范基础上进行设计。下面主要介绍在开发过程中几种基础的充电类型。充电类型 标准下行接口(SDP : Standard Downstream Port) USB端口硬件设计…...
Spring AI vs LangChain4j
Spring AI vs LangChain4j下面是 Spring AI vs LangChain4j 的对比 + 使用建议,帮你理解两者的区别、优缺点,以及哪种场景适合用哪个。🔍 基本介绍项目Spring AILangChain4j官网 / 文档 Spring AI 是 Spring 框架内的新模块,提供 AI 能力(模型调用、嵌入、向量数据库等)…...
P7913 [CSP-S 2021] 廊桥分配
P7913题解。题目传送门 首先我们是可以把两个区拆开考虑的,以下以国内区为例: 我们先不考虑廊桥个数的限制。由于飞机是遵循先来先到的原则,所以我们不需要帮忙排飞机了,直接让飞机停在当前编号最小的空闲廊桥。 这样当每一班飞机到机场时,我们可以模拟出来这架飞机会停在…...
函数计算进化之路与 AI Sandbox 新基座
在人工智能技术加速渗透的今天,AI Agent 正从执行固定指令的 "机械手臂" 进化为具备自主推理能力的 "数字大脑"。这类由大语言模型驱动的智能体,能通过多步骤任务拆解、环境感知与动态决策,完成复杂的业务场景需求。但当这些具备代码生成能力的 Agent 需…...
iPhone 17核心名单揭晓,92家中国公司占半壁江山!
微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 35469554100490879月10日,苹果公司在2025秋季新品发布会上,重磅发布四款iPhone 17系列机型:iPhone 17、iPhone 17 Air、iPhone 17 Pro及iPho…...
202009_风二西_蓝牙协议流量
流量分析,蓝牙协议Tags:流量分析,蓝牙传输 0x00. 题目 题目表述 附件路径:https://pan.baidu.com/s/1GyH7kitkMYywGC9YJeQLJA?pwd=Zmxh#list/path=/CTF附件 附件名称:202009_风二西_蓝牙协议.zip 0x01. WP 1. 浏览流量包,发现一个带传输文件的流量交互2. 查看分组字节后导出…...
AI Agent工作流实用手册:5种常见模式的实现与应用,助力生产环境稳定性
很多人认为使用AI Agent就是直接扔个提示词过去,然后等结果。做实验这样是没问题的,但要是想在生产环境稳定输出高质量结果,这套玩法就不行了。 核心问题是这种随意的提示方式根本扩展不了。你会发现输出结果乱七八糟,质量完全不可控,还浪费计算资源。 真正有效的做法是设…...
2025权威榜单之公众号排版Top5(含效率对比与适用建议)
在新媒体运营的日常工作中,“微信公众号排版设计”可是个让人头疼的事儿。写作慢、排版耗时、跨平台排版不统一等问题,像一只只小怪兽,困扰着我们这些新媒体运营者、自媒体人还有电商从业者。为了帮大家找到一款合适的公众号编辑器,我亲测了多款市面上主流的产品。在这篇文…...
4
4...