爬虫专栏第一篇:深入探索爬虫世界:基础原理、类型特点与规范要点全解析
本专栏会对爬虫进行从0开始的讲解,每一步都十分的细致,如果你感兴趣希望多多点赞收藏关注支持
简介:文章对爬虫展开多方面剖析。起始于爬虫的基本概念,即依特定规则在网络抓取信息的程序或脚本,在搜索引擎信息提取上作用显著。阐述其于大数据背景下可助力获取并处理分析数据的价值。着重说明避免违法的关键,涉及遵循网站 robots.txt 文件规定、合理控制访问频率、杜绝恶意篡改网站信息以及尊重个人隐私与知识产权等方面。详细解读通用爬虫,涵盖 URL 构成要素与搜索引擎获取新网站 URL 的途径等。同时深入介绍聚焦爬虫,包含 Chrome 浏览器开发者工具 F12 的运用、HTTP 超文本传输协议的 GET 和 POST 操作以及 HTTP 协议字段解析,如 Cookie、user-agent 等重要组成部分与常见状态码含义等,为读者清晰展现爬虫的全貌。
1爬虫的基本介绍
1.1什么是爬虫
爬虫是一种按一定规则在互联网上抓取信息的程序或脚本。他可以自动的访问互联网上的网页,搜索引擎(百度 谷歌)使用大量的爬虫提取网页的关键词,这样当用户在搜索引擎中输入关键词时,就能快速地找到相关的网页。
1.2爬虫的价值与意义
常说现在是大数据时代,这些数据如果市场上没有,或者不愿意购买,可以选择自己使用爬虫去获取需要的数据,进行处理和分析
1.3避免违法
如果不想因为爬虫触犯法律:
(第一点):它存放在网站根目录下的 robots.txt 文件中,用于告诉爬虫哪些页面可以抓取,哪些不可以。比如在下图百度的网址后+robots.txt就可以找到那些是不允许的了。
(第二点):控制访问频率避免对服务器带来较大负担
(第三点):不要恶意篡改网站信息,会涉及到破坏计算机信息系统罪
(第四点):尊重个人隐私,尊重知识产权
1.4通用爬虫
他是搜索引擎的重要组成部分,从互联网采集信息,为建立索引提供支持,决定了搜索殷勤的内容是否丰富,即时。
1.4.1什么是URL
URL是互联网资源的门牌号,由多个部分组成:
(第一部分–协议):比如我用一台手机,打开一个网页。我这个手机需要的是页面的信息,所以我的手机是被服务的客户叫做客户端,给予信息的是提供服务的叫做服务端或者服务器。他们要遵循一种特定的规则去实现信息的传输,常见协议有https (超文本传输安全协议)
http(超文本 传输协议)
ftp(文件传输协议)
(第二部分是IP地址)比如www.baidu.com就是ip地址
(第三部分是端口)一般默认http默认端口是80,会被省略。
(第四部分)path访问资源的路径
(第五部分参数)我们通过百度搜索python,观察一下地址栏的变化
可以看到参数wd = python说明这是搜索的参数
搜索引擎获取新网站URL的三种方式:
(第一种)新网站主动向搜索引擎提交网址
(第二种)在其他网站上设置新网站外链
(第三种)和dns解析服务商合作
1.5聚焦爬虫
他是针对于特定网站或平台进行某一类数据爬取
1.5.1 Chromne浏览器开发者工具F12
按F12或者右键检查。比如我们打开百度网站,打开开发者工具
刷新网站找到www.baidu.com的抓包:
注重强调要对: 保留日志/preserve log部分打钩,他的作用是比如我要完成一次登录,那么他可以保证登录的请求不丢失。登录完以后还可以已通过开发者工具看到自己提交的登录请求,如果不打钩,他会自动丢失。
那么为什么不能丢失呢?因为我们在使用爬虫的时候会遇到登录问题,我们需要抓登录需要的包,将爬虫模拟成真人登录,才能爬取我们需要的信息。
1.5.2 HTTP 超文本传输协议
比如手机打开一个百度浏览器他会自动输入百度的网址,通过URL地址对存储百度页面的服务器发送请求GET /POST,而服务器给予响应。
GET:比如需要一个网页页面 ,就是GET
POST:比如需要登录输入用户名密码就是POST
我们可以通过抓包看GET,打开百度首页开发者工具刷新:
我们可以看到一个GET请求,他的状态码是200,目前只需要知道状态码都是三位数,2开头的代表访问正常,4开头代表访问异常,比如常见的404,406。我们会单独将状态码这个知识点,目前留个印象就好。
1.5.3 HTTP协议字段解析
还是打开百度首页,打开开发者工具抓包并刷新:
可以看到很多信息,我把常用信息进行讲解,这三个代表着 URL地址 方法 以及 状态码。
鼠标滚轮往下滚可以看到:
Cookie的作用很重要,比如你在一个购物网站登录了,服务器怎么识别出来你。他检测方法之一就是判断cookie是否正确。
user-agent也很重要,他代表着我们是通过什么浏览器,什么系统去访问的。服务器一看到他就知道是真人访问。爬虫对于服务器来说是压力。将心比心,你们开发一个网站是不是更乐意把网站提供给真人,因为信息的传播会带来价值,给爬虫又不会给你创造价值。所以服务器可以通过多种方式判断爬虫从而降低爬虫打来的压力。作为爬虫,我们要做的就是模仿成真人的访问,把自己做的正常一点
对于相应状态码要单独讲解:
1开头 代表成功接收部分请求
2开头代表成功
3开头代表需要客户需要细化请求
4开头代表有错误 :404无法找到403拒绝访问权限不够
5开头 服务器端遇到不可预知的错误
相关文章:
爬虫专栏第一篇:深入探索爬虫世界:基础原理、类型特点与规范要点全解析
本专栏会对爬虫进行从0开始的讲解,每一步都十分的细致,如果你感兴趣希望多多点赞收藏关注支持 简介:文章对爬虫展开多方面剖析。起始于爬虫的基本概念,即依特定规则在网络抓取信息的程序或脚本,在搜索引擎信息提取上作…...
SpringBoot3 + Vue3 由浅入深的交互 基础交互教学2
目录 一、这篇文章是基础交互教学系列的续作 二、发送请求时,携带发送的数据json格式的参数:data 三、携带token请求头,进行JWT校验 四、实现throw抛出异常,并交互显示在前端的界面 一、这篇文章是基础交互教学系列的续作 大…...
PID模糊控制算法(附MATLAB仿真程序)
一、基本原理 PID模糊控制算法是一种将传统PID控制与模糊逻辑相结合的控制策略。它利用模糊逻辑处理不确定性和非线性问题的能力,以提高控制系统的性能。以下是PID模糊控制算法的基本原理: 1.1. **误差和误差变化率的计算**: - 首先&…...
云轴科技ZStack助力 “上科大智慧校园信创云平台”入选上海市2024年优秀信创解决方案
近日,为激发创新活⼒,促进信创⾏业⾼质量发展,由上海市经济信息化委会同上海市委网信办、上海市密码管理局、上海市国资委等主办的“2024年上海市优秀信创解决方案”征集遴选活动圆满落幕。云轴科技ZStack支持的“上科大智慧校园信创云平台”…...
分布式集群下如何做到唯一序列号
优质博文:IT-BLOG-CN 分布式架构下,生成唯一序列号是设计系统常常会遇到的一个问题。例如,数据库使用分库分表的时候,当分成若干个sharding表后,如何能够快速拿到一个唯一序列号,是经常遇到的问题。实现思…...
Linux vi/vim
Linux vi/vim 所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。 但是目前我们使用比较多的是 vim 编辑器。 vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。 什么是 vim&…...
二分搜索(二)搜索插入位置
35. 搜索插入位置 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: …...
postgresql in模糊查询
postgresql in模糊查询 plsql模糊查询表名 转载 一.简单查询 1.Select 列名,列名…from select e.empno,e.ename,e.job,e.sal from emp e(别名); 2.带条件查询 select 列名,列名,…,列名 from 表名 where –查询名字叫SMITH的员工的信息 select * from emp where ena…...
政府大数据面临的挑战
政府大数据在数据资源标准、共享、应用、评价以及数据资产转化方面面临着严峻挑战,因此需要从保障数据流动性的角度来重构信息体系,从关注流程和业务逻辑的角度转向关注数据流动性和数据价值,遵从信息流动的内在逻辑,发挥数据的最…...
数据结构---链表
1. 简介 链表(Linked List)是一种常见的线性数据结构,它由一系列节点组成,每个节点包含数据部分和指向下一个节点的指针(或引用)。链表的一个主要优点是能够高效地插入和删除元素,尤其是在数组…...
【系统架构设计师】真题论文: 论无服务器架构及其应用(包括解题思路和素材)
更多内容请见: 备考系统架构设计师-专栏介绍和目录 文章目录 真题题目(2017年 试题3)解题思路论文素材参考无服务器架构概念和特点无服务器架构的核心技术组件无服务器架构在不同领域的应用真题题目(2017年 试题3) 近年来,随着信息技术的迅猛发展和应用需求的快速更迭,…...
深度学习模型:BiLSTM (Bidirectional LSTM) - 双向长短时记忆网络详解
一、引言 在深度学习领域,序列数据的处理一直是一个关键任务。循环神经网络(RNN)及其变体在自然语言处理、语音识别、时间序列分析等诸多领域发挥着重要作用。然而,传统的 RNN 面临着梯度消失或梯度爆炸等问题,导致难…...
【计算机网络】实验3:集线器和交换器的区别及交换器的自学习算法
实验 3:集线器和交换器的区别及交换器的自学习算法 一、 实验目的 加深对集线器和交换器的区别的理解。 了解交换器的自学习算法。 二、 实验环境 • Cisco Packet Tracer 模拟器 三、 实验内容 1、熟悉集线器和交换器的区别 (1) 第一步:构建网络…...
playwright 学习复仇记-2 Selector选择器定位元素
前言 Selector 选择器,也就是通常说的元素定位了,页面上点点点的操作,都是基于元素定位,所以这块是重点需要学的核心内容。 Selector 选择器 说到元素定位,大家肯定会首先想到 selenium 的八大元素定位,其…...
C语言——实现计算房屋总价
//功能:计算房屋总价 //房屋总价 房屋面积 * 单价 //契税 房屋总价 * 0.15% //印花税 房屋总价 * 0.05% //功能:计算房屋总价 //房屋总价 房屋面积 * 单价 //契税 房屋总价 * 0.15% //印花税 房屋总价 * 0.05%#include<stdio.h>void main()…...
Vue3 脚手架扩展
当 yarn dev 运行成功后,我们继续添加扩展 首先我们要安装一些依赖 其中的vue-router和vuex安装最新版的就行,因为项目是vue3 element-plus和less,less-loader最好按照我这个版本来下载 element-plus是一个vue常用的ui组件库 element-plus/…...
Ubuntu 20.04 程序运行导致“段错误 (核心已转储)”的原因分析及解决方案 ubuntu
Ubuntu 20.04 程序运行导致“段错误 (核心已转储)”的原因分析及解决方案 在Ubuntu 20.04系统中,运行程序时出现“段错误 (核心已转储)”是一种常见的错误提示。本文将详细解析导致段错误的原因,并提供完整的解决方案,辅以示例说明ÿ…...
Mysql常用sql语句
数据库操作 # 创建数据库 create database 库名 charsetutf8; # 使用数据库 use 库名; # 退出数据库 quit # 查看所有数据库 show databases; # 查看当前使用的数据库 select database(); # 删除数据库 drop database 库名; 表操作 #查看当前数据库中所有表 show tables;#创…...
SpringBoot 架构下的在线家具商城:规划与实践之路
第1章 绪论 1.1选题动因 当前的网络技术,软件技术等都具备成熟的理论基础,市场上也出现各种技术开发的软件,这些软件都被用于各个领域,包括生活和工作的领域。随着电脑和笔记本的广泛运用,以及各种计算机硬件的完善和升…...
request和websocket
当然,可以为你详细介绍 FastAPI 中的 Request 对象。Request 对象在 FastAPI 中扮演着重要的角色,负责封装来自客户端的 HTTP 请求信息。了解 Request 对象的使用方法和属性,有助于你更高效地处理请求数据、访问请求上下文以及进行各种操作。…...
前端【9种前端常见的设计模式】
🌟9种前端常见的设计模式 哈喽小伙伴们,这期给大家整理了一些有关9种前端常见的设计模式,覆盖多方面基础知识,建议大家收藏阅读。 文章目录 🌟9种前端常见的设计模式🌟1. 外观模式🌟 2. 代理模…...
IDEA使用HotSwapHelper进行热部署
目录 前言JDK1.8特殊准备DECVM安装插件安装与配置参考文档相关下载 前言 碰到了一个项目,用jrebel启动项目时一直报错,不用jrebel时又没问题,找不到原因,又不想放弃热部署功能 因此思考能否通过其他方式进行热部署,找…...
【Django-xadmin】
时间长不用,会忘的系列 1、Django-xadmin后台字段显示处理 主要是修改每个模块下adminx.py文件 代码解释:第1行控制表单字段显示第2行控制列表字段显示第3行控制搜索条件第4行控制过滤条件第5行支持单个或多个字段信息修改第6行列表分页,每页显示多少行…...
AI 计算基础设施的战略转折点分析
核心技术范式转移 我们正处于计算架构的重大转折点。第一个根本性转变是从传统的 CPU 编程范式,向以 GPU 为核心的神经网络运算模式转移。这不仅仅是硬件架构的改变,更代表了整个软件开发和应用部署方式的革新。第二个转变则是在这个新的基础设施之上&a…...
Java基于SpringBoot+Vue的IT技术交流和分享平台(附源码+lw+部署)
博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…...
二:OpenStack环境准备-controller node
一:工具、环境准备-controller node 二:OpenStack环境准备-controller node 三:安装服务-controller node 四:工具、环境准备-compute node 五:OpenStack环境准备-compute node 六:安装服务-compute node 七…...
解决stable-diffusion-webui时的问题:No module ‘xformers‘. Proceeding without it
p.s 被另一篇文章坑了,装个xformers把我原先的pytorch降智了&%$^# 注意:!!!xformers非强制安装;可优化显存,提高性能和出图速率,对于GPU能力有限的用户很有用;安装过…...
清理Linux/CentOS7根目录的思路
在使用Linux服务器过程中,经常会遇到磁盘空间不足的问题,好多应用默认安装在根目录下,记录一下如何找到问题所在,清理根目录(/) 1. 检查空间使用情况 1.1 查看分区占用: df -h输出࿱…...
人工智能-深度学习-BP算法
BP算法的核心思想是通过计算损失函数对网络参数的梯度,然后使用梯度下降法来更新网络参数,从而最小化损失函数。 误差反向传播算法(BP)的基本步骤: 前向传播:正向计算得到预测值。 计算损失:通过损失函数计算预测值和真实值的差…...
C++小问题
怎么分辨const修饰的是谁 是限定谁不能被改变的? 在C中,const关键字的用途和位置非常关键,它决定了谁不能被修改。const可以修饰变量、指针、引用等不同的对象,并且具体的作用取决于const的修饰位置。理解const的规则能够帮助我们…...
如何让控件始终处于父容器的居中位置(父容器可任意改变大小)
前言: 大家好,我是上位机马工,硕士毕业4年年入40万,目前在一家自动化公司担任软件经理,从事C#上位机软件开发8年以上!我们在C#开发winform程序的时候,有时候需要将一个控件居中显示,…...
Python 调用 Umi-OCR API 批量识别图片/PDF文档数据
目录 一、需求分析 二、方案设计(概要/详细) 三、技术选型 四、OCR 测试 Demo 五、批量文件识别完整代码实现 六、总结 一、需求分析 市场部同事进行采购或给客户报价时,往往基于过往采购合同数据,给出现在采购或报价的金额…...
Java基础访问修饰符全解析
一、Java 访问修饰符概述 Java 中的访问修饰符用于控制类、方法、变量和构造函数的可见性和访问权限,主要有四种:public、protected、default(无修饰符)和 private。 Java 的访问修饰符在编程中起着至关重要的作用,它…...
朗迪锋亮相2024人因工程与智能系统交互国际会议
2024年11月28日至30日,2024人因工程与智能系统交互国际会议在深圳隆重举办。此次大会以推动我国人因工程学科发展为目标,致力于加强国际学术交流,深入探讨人工智能时代的智能系统交互,旨在培育新质生产力,助力经济社会…...
OpenGL学习过程总结
1、矩阵 参考链接 第三课:矩阵变换...
webGL入门教程_06变换矩阵与绕轴旋转总结
变换矩阵与绕轴旋转总结 目录 1. 变换矩阵简介2. 平移矩阵3. 缩放矩阵4. 旋转矩阵 4.1 绕 Z 轴旋转4.2 绕 X 轴旋转4.3 绕 Y 轴旋转 5. 组合变换矩阵6. 结论 1. 变换矩阵简介 在计算机图形学中,变换矩阵用于在三维空间中对物体进行操作,包括ÿ…...
mysql 查询所有的触发器
SELECTTRIGGER_SCHEMA AS Database,TRIGGER_NAME AS Trigger,EVENT_OBJECT_TABLE AS Table,EVENT_MANIPULATION AS Event,ACTION_STATEMENT AS Statement FROMinformation_schema.TRIGGERS;创建触发器遇到报错: You do not have the SUPER privilege and binary lo…...
基于Java Springboot个人财务APP且微信小程序
一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 微信…...
GateWay使用手册
好的,下面是优化后的版本。为了提高可读性和规范性,我对内容进行了结构化、简化了部分代码,同时增加了注释说明,便于理解。 1. 引入依赖 在 pom.xml 中添加以下依赖: <dependencies><!-- Spring Cloud Gate…...
go语言读取yaml配置文件内容
1、config.yaml配置文件内容假设如下 name: "example" version: 1.0 settings:timeout: 30debug: truefeatures:- feature1- feature22、定义结构体 go语言定义结构体匹配yaml内容 package mainimport ("fmt""log""os""gopkg.…...
Proteus8.17下载安装教程
Proteus是一款嵌入式系统仿真开发软件,实现了从原理图设计、单片机编程、系统仿真到PCB设计,真正实现了从概念到产品的完整设计,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,能够帮助用…...
【AI】Sklearn
长期更新,建议关注、收藏、点赞。 友情链接: AI中的数学_线代微积分概率论最优化 Python numpy_pandas_matplotlib_spicy 建议路线:机器学习->深度学习->强化学习 目录 预处理模型选择分类实例: 二分类比赛 网格搜索实例&…...
图数据库 | 10、图数据库架构设计——高性能图存储架构(上)
老夫在之前的三大篇内容中,介绍了图数据库的三大组件—图计算、图存储以及图查询语言。(都归拢在图数据库原理、架构与应用这个专栏中了,感兴趣的朋友可以在去找阅读。) 接下来,老夫还将继续深化这三大组件࿰…...
el-table 组件二次封装(vue2)
PublicTable.vue <!-- 公共表格组件 --> <template><div class"table-common"><el-table v-loading"loading" :ref"tableid" border style"width: 100%" :data"tableDatas" :row-key"rowKey&quo…...
张量并行和流水线并行在Transformer中的具体部位
目录 张量并行和流水线并行在Transformer中的具体部位 一、张量并行 二、流水线并行 张量并行和流水线并行在Transformer中的具体部位 张量并行和流水线并行是Transformer模型中用于提高训练效率的两种并行策略。它们分别作用于模型的不同部位,以下是对这两种并行的具体说…...
详解Qt pdf 之QPdfSelection 选择文本类
文章目录 QPdfSelection 类详解前言 详细说明公共函数说明1. 构造函数2. text3. boundingRect4. isEmpty5. startPage6. endPage 使用场景示例代码代码说明总结 QPdfSelection 类详解 前言 QPdfSelection 是 Qt PDF 模块中的一个类,用于表示在 PDF 文档中被选中的…...
一款支持80+语言,包括:拉丁文、中文、阿拉伯文、梵文等开源OCR库
大家好,今天给大家分享一个基于PyTorch的OCR库EasyOCR,它允许开发者通过简单的API调用来读取图片中的文本,无需复杂的模型训练过程。 项目介绍 EasyOCR 是一个基于Python的开源项目,它提供了一个简单易用的光学字符识别ÿ…...
matlab 中的 bug
在matlab中绘图,设置 axe 的背景颜色 axes_in3.Color #00235B ;打印的时候 print(figure_handle1,-dpng,-r300,"merge_yt_ey") ;此时保存的图片无法识别背景颜色 原因在于 matlab 中的 InverseHardcopy 将 InvertHardcopy 设置成 off 则可以解决这个问…...
【算法刷题指南】优先级队列
🌈个人主页: 南桥几晴秋 🌈C专栏: 南桥谈C 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据…...
android user版本默认usb模式为充电模式
android插入usb时会切换至默认设置的模式,debug版本为adb,user版本为mtp protected long getChargingFunctions() {// if ADB is enabled, reset functions to ADB// else enable MTP as usual.if (isAdbEnabled()) {return UsbManager.FUNCTION_ADB;} e…...