第1章 爬虫基础

目录

  • 1. HTTP 基本原理
    • 1.1 URI 和 URL
    • 1.2 HTTP 和 HTTPS
    • 1.3 请求
      • 1.3.1 请求方法
      • 1.3.2 请求的网址
      • 1.3.3 请求头
      • 1.3.4 请求体
    • 1.4 响应
      • 1.4.1 响应状态码
      • 1.4.2 响应头
      • 1.4.3 响应体
  • 2. Web 网页基础
    • 2.1 网页的组成
      • 2.1.1 HTML
      • 2.1.2 CSS
      • 2.1.3 JavaScript
    • 2.2 网页的结构
    • 2.3 节点树及节点间的关系
    • 2.4 选择器
  • 3. 爬虫的基本原理
    • 3.1 爬虫概述
      • 3.1.1 获取网页
      • 3.1.2 提取信息
      • 3.1.3 保存数据
      • 3.1.4 自动化程序
  • 4. Session 和 Cookie
    • 4.1 静态网页和动态网页
    • 4.2 无状态 HTTP
    • 4.3 Session
    • 4.4 Cookie
      • 4.4.1 Session 维持
      • 4.4.2 属性结构
      • 4.4.3 会话 Cookie 和持久 Cookie

1. HTTP 基本原理

1.1 URI 和 URL

  • URI:统一资源标识符

    • URL:统一资源定位符

      • http://localhost:8080/Study/test.jsp
        
      • 指定了访问资源的唯一方式(访问协议、访问路径和资源名称)

    • URN:统一资源名称

      • urn:id:123456
        
      • 只为资源命名,但不指定如何定位

  • URL的基本组成格式

    scheme://[username:password@]hostname[:port][/path][;parameters][?query][#fragment]
    
    • scheme(protocol):协议

      • 常用协议:hrrp、https、ftp等
    • username、password:用户名、密码

      • 某些情况下 URL 需要提供用户名和密码才能访问
    • hostname:主机地址

      • 可以是域名或 IP 地址
    • port:端口

      • http://localhost:8080
        
      • 服务器设定的端口

    • path:路径

      • 网络资源在服务器中的指定地址
    • parameters:参数

      • 用来指定访问某个资源时的附加信息
    • query:查询

      • 用来查询某类资源
      • 如有多个查询,则用 & 隔开
    • fragment:片段

      • 对资源描述的部分补充
      • 两个主要应用
        • 单页面路由:Vue、React 都可以借助它来做路由管理
        • HTML 锚点:控制一个页面打开时自动下滑滚动到某个特定的位置

1.2 HTTP 和 HTTPS

  • HTTP:超文本传输协议
    • 把超文本数据从网络传输到本地路由器
    • 能够保证高效而准确地传输超文本文档
  • HTTPS:以安全为目标的 HTTP 通道
    • 在 HTTP 下加入 SSL 层
    • SSL 的主要作用
      • 建立一个信息安全通道,保证数据传输的安全性
      • 确认网站的真实性

1.3 请求

1.3.1 请求方法

  • 用于标识请求客户请求服务端的方式

  • 常见的请求方法:

    • GET:在浏览器中直接输入 URL 并回车
      • 请求的参数会直接包含到 URL 里
    • POST:大多在提交表单时发起
      • 数据通常以表单的形式传输,而不会体现在 URL 中
  • GET 和 POST 请求方法的区别

    • GET
      • 参数包含在 URL 中,数据可以在 URL 中看到
      • 提交的数据最多只有1MB
    • POST
      • URL 不包含参数数据,数据都是通过表单形式传输,会包含在请求体中
      • 对提交的数据没有大小限制

1.3.2 请求的网址

  • 唯一确定客户端向请求的资源

1.3.3 请求头

  • 用来说明服务器要使用的附加信息
  • 常用的请求头信息
    • Accept:请求报头域
      • 用于指定客户端可接受哪些类型的信息
    • Accept-Language:
      • 用于指定客户端可接受的语言类型
    • Accept-Encoding:
      • 用于指定客户端可接受的内容编码
    • Host:
      • 用于指定请求资源的主机 IP 和端口号
      • 内容为请求 URL 的原始服务器或网关的位置
    • Cookie:
      • 网站为了辨别用户,进行会话跟踪而存储在用户本地的数据
      • 主要功能为维持当前访问会话
        • 自动登录
    • Referer:
      • 用于标识请求是哪个页面发过来的
    • User-Agent:
      • 一个特殊的字符串头
      • 使服务器识别客户端使用的操作系统及版本、浏览器及版本等信息
    • Content-Type:互联网媒体类型(MIME 类型)
      • 在 HTTP 协议消息头中
      • 用来标识具体请求中的媒体类型信息
        • text/html:HTML 格式
        • image/gif:GIF 图片
        • application/json:JSON 类型

1.3.4 请求体

  • 一般承载的内容是 POST 请求中的表单数据
  • 对于 GET 请求,请求体为空

1.4 响应

1.4.1 响应状态码

  • 表示服务器的响应状态
  • 常见的状态码
    • 200:服务器正常响应
    • 404:页面未找到
    • 500:服务器内部发生错误

1.4.2 响应头

  • 包含了服务器对请求的应答信息
  • 常用的响应头信息
    • Date:
      • 用于标识响应产生的时间
    • Last-Modified:
      • 用于指定资源的最后修改时间
    • Content-Encoding:
      • 用于指定响应内容的编码
    • Server:
      • 包含服务器的信息
        • 名称、版本号等
    • Content-Type:文档类型
      • 指定返回的数据类型
    • Set-Cookie:设置 Cookie
      • 用于告诉浏览器需要将此内容放在 Cookie 中,下次请求时将 Cookie 携带上
    • Expires:
      • 用于指定响应的过期时间
      • 让代理服务器或浏览器将加载的内容更新到缓存中
      • 当再次访问相同的内容时,就可以直接从缓存中加载

1.4.3 响应体

  • 响应的正文数据都存在于响应体中

2. Web 网页基础

2.1 网页的组成

2.1.1 HTML

  • 超文本标记语言
  • 网页的基础架构

2.1.2 CSS

  • 层叠样式表
    • 层叠:
      • 当 HTML 中引用了多个样式文件,并且样式发生冲突时,浏览器能够按照层叠顺序处理这些样式
    • 样式:
      • 网页中的文字大小、颜色、元素间距、排列等格式

2.1.3 JavaScript

  • 脚本语言
  • 实现了一种实时、动态、交互的页面功能

2.2 网页的结构

  • 一个网页的标准形式是 html 标签内嵌套 head 标签和 body 标签
    • head 标签内定义网页的配置和引用
    • body 标签内定义网页的正文

2.3 节点树及节点间的关系

  • HTML节点树:HTML DOM 树

  • 整个文档是一个文档节点

  • 每个 HTML 元素是元素节点

  • HTML 元素内的文本是文本节点

  • 每个 HTML 属性是属性节点

  • 注释是注释节点

节点树

  • 节点树中的节点彼此拥有层级关系

  • 常用父(parent)、子(child)和兄弟(sibling)等术语用于描述这些关系

    • 父节点拥有子节点
    • 同级的子节点被称为兄弟节点
  • 在节点树中,顶端节点被称为根(root)

  • 每个节点都有父节点、除了根(它没有父节点)

  • 一个节点可拥有任意数量的子节点或兄弟节点

节点树及树中节点间的关系

2.4 选择器

  • 在 CSS 中,使用 CSS 选择器来定位节点

3. 爬虫的基本原理

3.1 爬虫概述

3.1.1 获取网页

  • 获取网页的源代码

3.1.2 提取信息

  • 分析源代码,从中提取所需数据

3.1.3 保存数据

  • 将提取到的数据保存到某处以便后续使用

3.1.4 自动化程序

  • 代替人来完成上述操作

4. Session 和 Cookie

4.1 静态网页和动态网页

  • 静态网页
    • 网页的内容由 HTML 代码编写,文字、图片等内容均通过写好的 HTML 代码来指定
  • 动态网页
    • 动态解析 URL 中参数的变化,关联数据库并动态呈现不同的页面内容

4.2 无状态 HTTP

  • HTTP 协议对事务的处理没有记忆能力
  • 服务器不知道客户端处于什么状态

4.3 Session

  • 会话
  • 有始有终的一系列动作、信息
  • Session 对象用来存储特定用户 Session 所需的属性及配置信息
  • 当用户进行页面跳转时,存储在 Session 中的变量不会丢失
  • 如果没有 Session ,Web 服务器会自动创建一个 Session 对象
  • Session 过期后,服务器将终止该 Session

4.4 Cookie

4.4.1 Session 维持

  • 客户端第一次请求服务器时,服务器会返回一个响应头中带有 Set-Cookie 字段的响应给客户端,这个字段用来标记用户
  • 当下一次请求相同的网站时,把保存的 Cookie 放到请求头中一起提交给服务器
  • Cookie 中携带着 SessionID 相关信息,服务器通过检查 Cookie 即可找到对应的 Session,进而通过判断 Session 辨认用户状态

4.4.2 属性结构

  • Name:

    • Cookie 的名称
  • Value:

    • Cookie 的值
  • Domain:

    • 指定可以访问该 Cookie 的域名
  • Path:

    • Cookie 的使用路径
  • Max-Age:

    • Cookie 失效的时间
  • Size 字段:

    • Cookie 的大小
  • HTTP 字段:

    • Cookie 的 httponly 属性
    • 若此属性为true,则只有在 HTTP Headers 中才会带有此 Cookie 信息,而不能通过脚本document.cookie来访问该 Cookie
  • Secure

    • 是否仅允许使用安全协议传输 Cookie

4.4.3 会话 Cookie 和持久 Cookie

  • 会话 Cookie
    • 把 Cookie 放在浏览器内存中,关闭浏览器后,Cookie 即失效
  • 持久 Cookie
    • 把 Cookie 保存到客户端的硬盘中,下次还可以继续使用

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

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

相关文章

windows上 adb devices有设备 wsl上没有

终于解决了!!!! TAT,尝试了很多种办法。 比如WSL中的adb和Windows中的adb版本必须一致,一致也没用,比如使用 ln 建立链接也没用。 这个解决办法的前提是windows中的abd是好用的。 ●在windows…

JSP:JDBC

JDBC(Java Data Base Connectivity的缩写)是Java程序操作数据库的API,也是Java程序与数据库相交互的一门技术。 JDBC是Java操作数据库的规范,由一组用Java语言编写的类和接口组成,它对数据库的操作提供基本方法&#…

anaconda换源安装pytorch(附带bug解决办法)

1.安装anaconda 如何安装anaconda可以看这篇文章:如何安装anaconda 2.换源安装pytorch: 首先进入到pytorch官网,选对好参数之后复制命令进入到anaconda prompt即可: 然后进入自己的环境之后输入该命令(即conda install …),则可以进行下载。下载完成…

pandas教程:USDA Food Database USDA食品数据库

文章目录 14.4 USDA Food Database(美国农业部食品数据库) 14.4 USDA Food Database(美国农业部食品数据库) 这个数据是关于食物营养成分的。存储格式是JSON,看起来像这样: {"id": 21441, &quo…

入侵redis之准备---Linux关于定时任务crontab相关知识了解配合理解shell反弹远程控制

入侵redis之准备—Linux关于定时任务crontab相关知识了解配合理解shell反弹远程控制 几点需要知道的信息 【1】crontab一般来说服务器都是有的,依赖crond服务,这个服务也是必须安装的服务,并且也是开机自启动的服务,也就是说&…

C语言做一个恶作剧关机程序

一、项目介绍 C语言实现一个简单的"流氓软件"&#xff0c;一个可以强制关机恶作剧关机程序&#xff0c;输入指定指令可以解除 二、运行截图 然后当你输入“n”才可以解锁关机。 三、完整源码 #include <stdlib.h> #include <stdio.h> #include <s…

机器学习8:在病马数据集上进行算法比较(ROC曲线与AUC)

ROC曲线与AUC。使用不同的迭代次数&#xff08;基模型数量&#xff09;进行 Adaboost 模型训练&#xff0c;并记录每个模型的真阳性率和假阳性率&#xff0c;并绘制每个模型对应的 ROC 曲线&#xff0c;比较模型性能&#xff0c;输出 AUC 值最高的模型的迭代次数和 ROC 曲线。 …

【传智杯】儒略历、评委打分、萝卜数据库题解

&#x1f34e; 博客主页&#xff1a;&#x1f319;披星戴月的贾维斯 &#x1f34e; 欢迎关注&#xff1a;&#x1f44d;点赞&#x1f343;收藏&#x1f525;留言 &#x1f347;系列专栏&#xff1a;&#x1f319; 蓝桥杯 &#x1f319;请不要相信胜利就像山坡上的蒲公英一样唾手…

Vue框架学习笔记——事件scroll和wheel的区别

文章目录 前文提要滚动条滚动事件 scroll鼠标滚动事件 wheel二者不同点 前文提要 本人仅做个人学习记录&#xff0c;如有错误&#xff0c;请多包涵 滚动条滚动事件 scroll scroll事件绑定html页面中的指定滚动条&#xff0c;无论你拖拽滚动条&#xff0c;选中滚动条之后按键盘…

【深度学习】CNN中pooling层的作用

1、pooling是在卷积网络&#xff08;CNN&#xff09;中一般在卷积层&#xff08;conv&#xff09;之后使用的特征提取层&#xff0c;使用pooling技术将卷积层后得到的小邻域内的特征点整合得到新的特征。一方面防止无用参数增加时间复杂度&#xff0c;一方面增加了特征的整合度…

揭秘周杰伦《最伟大的作品》MV,绝美UI配色方案竟然藏在这里

色彩在UI设计的基本框架中占据着举足轻重的位置。实际上&#xff0c;精心挑选和组合的色彩配色&#xff0c;往往就是UI设计成功的不二法门。在打造出一个实用的UI配色方案过程中&#xff0c;我们需要有坚实的色彩理论知识&#xff0c;同时还需要擅于从生活中观察和提取灵感。以…

C++进阶篇5---番外-位图和布隆过滤器

哈希的应用 一、位图 情景&#xff1a;给40亿个不重复的无符号整数&#xff0c;没排过序。给一个无符号整数&#xff0c;如何快速判断一个数是否在这40亿个数中&#xff1f;&#xff1f;&#xff1f; 看到查找元素的范围&#xff0c;暴力肯定是过不了的&#xff0c;我们要么…

windows搭建gitlab教程

1.安装gitlab 说明&#xff1a;由于公司都是windows服务器&#xff0c;这里安装以windows为例&#xff0c;先安装一个虚拟机&#xff0c;然后安装一个docker&#xff08;前提条件&#xff09; 1.1搜索镜像 docker search gitlab #搜索所有的docker search gitlab-ce-zh #搜索…

【OpenCV实现图像:使用OpenCV进行物体轮廓排序】

文章目录 概要读取图像获取轮廓轮廓排序小结 概要 在图像处理中&#xff0c;经常需要进行与物体轮廓相关的操作&#xff0c;比如计算目标轮廓的周长、面积等。为了获取目标轮廓的信息&#xff0c;通常使用OpenCV的findContours函数。然而&#xff0c;一旦获得轮廓信息后&#…

Redis跳跃表

前言 跳跃表(skiplist)是一种有序数据结构&#xff0c;它通过在每一个节点中维持多个指向其他节点的指针&#xff0c;从而达到快速访问节点的目的。 跳跃表支持平均O(logN)&#xff0c;最坏O(N)&#xff0c;复杂度的节点查找&#xff0c;还可以通过顺序性来批量处理节点…

城市管理实景三维:打造智慧城市的新引擎

城市管理实景三维&#xff1a;打造智慧城市的新引擎 在城市管理领域&#xff0c;实景三维技术正逐渐成为推动城市发展的新引擎。通过以精准的数字模型呈现城市真实场景&#xff0c;实景三维技术为城市决策提供了全新的思路和工具。从规划设计到交通管理&#xff0c;从环境保护到…

HOOPS Web平台助力开发3D应用,实现超大规模3D web轻量化渲染与数据格式转换!

一、包含的软件开发工具包 HOOPS Web平台帮助开发人员构建基于Web的工程应用程序&#xff0c;提供高级3D Web可视化、准确快速的CAD数据访问和3D数据发布。 HOOPS Web平台包括三个集成软件开发工具包 (SDK)&#xff1a; &#xff08;1&#xff09;Web端3D可视化引擎 HOOPSCom…

五子棋游戏

import pygame #导入pygame模块 pygame.init()#初始化 screen pygame.display.set_mode((750,750))#设置游戏屏幕大小 running True#建立一个事件 while running:#事件运行for event in pygame.event.get():if event.type pygame.QUIT:#当点击事件后退出running False #事…

什么是神经网络(Neural Network,NN)

1 定义 神经网络是一种模拟人类大脑工作方式的计算模型&#xff0c;它是深度学习和机器学习领域的基础。神经网络由大量的节点&#xff08;或称为“神经元”&#xff09;组成&#xff0c;这些节点在网络中相互连接&#xff0c;可以处理复杂的数据输入&#xff0c;执行各种任务…

【蓝桥杯】刷题

刷题网站 记录总结刷题过程中遇到的一些问题 1、最大公约数与最小公倍数 a,bmap(int,input().split())sa*bwhile a%b:a,bb,a%bprint(b,s//b)2.迭代法求平方根(题号1021) #include<stdio.h> #include<math.h> int main() {double x11.0,x2;int a;scanf("%d&…