Python3网络爬虫开发--爬虫基础

网络爬虫基础

1.1 HTTP基本原理

1.1.1 URI和URL

URI即统一资源标志符,URL即统一资源定位符。
有这样一个链接,http://test.com/test.txt,在这个链接中,包含了访问协议https访问目录(即根目录)资源名称(test.txt)。通过这样的链接,可以在互联网上找到这个资源,这就是URI/URL
URL是URI的子集,每个URL都是URI,但在URI中还包含另一个子类URN,即统一资源名称,可以唯一标识这本书,但是没有指定到哪里定位这本书。
在当今网络中,很少使用URN,一般来说URI就是URL。

1.1.2 超文本

超文本就是网页的HTML源代码。
在浏览器中任意打开一个页面,右击选择检查,点击Elements就可以看到网页的源代码,里面包含了各种标签,网站正是解析了这些代码才形成了网页,这些代码就是超文本。

1.1.3 HTTP和HTTPS

在URLhttp://test.com/test.txt中,开头通常都是http或者https这就是访问资源需要的协议类型。
HTTP,中文名为超文本传输协议,用于从网络传输超文本数据道本地浏览器,保证高效而准确的传送超文本文档。
HTTPS,中文名为超文本传输安全协议,是HTTP的安全版,即HTTP下加入SSL层,简称HTTPS。因此,它传输的内容都是经过SSL加密的,它的主要作用是:

  • 建立一个信息安全通道来保证数据传输安全。
  • 确认网站的真实性。使用HTTPS的网站,都可以通过点击浏览器地址栏的锁头标志查看网站的真实信息。

1.1.4 HTTP请求过程

当我们在浏览器地址栏中输入了一个URL,回车之后,浏览器进行加载,就可以看到页面内容。
在这个过程中,就是我们的浏览器向网站服务器发送了一个请求,网站解析后,返回给浏览器一个回应,回应中包含了页面的源代码等,浏览器解析之后,就呈现出了网页。

1.1.5 请求

请求,由客户端向服务端发出,包括四部分内容:

  • 请求方法
  • 请求网站
  • 请求头
  • 请求体
1.请求方法

常见的请求方法有两种:GET和POST。
GET请求:在浏览器中输入URL并回车,这就是一个GET请求,请求的参数直接包含在URL中。
POST请求:在表单提交时发生,例如在登陆时,填写账号密码,点击登陆,通常就会发起一个POST请求,请求的数据通常一表单的形式传输。
GET和POST有如下区别:

  • GET请求的参数通常包含在URL中,数据可以在URL中看到;post请求的URL不包含数据,数据以表单形式传输,包含在请求体中。
  • GET请求提交的数据最多只有1024字节;POST在数据量上没有限制。
    此外还有其他请求方法:
    GET 请求页面,并返回页面内容。
    HEAD 类似与GET请求,返回的相应中不含具体内容,用于获取报头。
    POST 大多数用于提交表单或者上传文件,数据包含在请求体中。
    PUT 从客户端向服务器传送的数据取代指定文档中的内容。
    DELETE 请求服务器删除指定页面。
    CONNECT 把服务器当跳板,让服务器代替客户端访问其他网页。
    OPTIONS 允许客户端查看服务器的性能。
    TRACE 回显服务器收到的请求,主要用于测试或者诊断。
2. 请求的网址

即是统一资源定位符URL。

3.请求头

用来说明服务器要使用的附加信息。
Accept:请求报头域,用于指定客户端可接受哪些信息。
Accept-Language:指定客户端可接受的语言类型。
Accept-Encoding:指定客户端可接受的内容编码。
Host:用于指定请求资源的主机IP和端口号,其内容为请求URL的原始服务器货网关的位置。
Cookie:也常用Cookies。这是网站为辨别用户而存储在用户本地的数据,主要功能为维持当前访问对话,登陆之后,服务器对应信息就会存储在Cookies中,每当浏览器向服务器发出请求时,就会在请求头中加入Cookies,服务器以此辨识用户身份,并且识别状态为登陆状态,返回登陆后的结果。
Referer:标识这个请求从哪个页面发出。
User-Agent:一个特殊的字符串头,使服务器识别用户的操作系统及版本,浏览器及版本等信息。制作爬虫时使用此信息伪装成浏览器。
Content-Type:及互联网媒体类型,在HTTP协议消息头中用来表示具体请求中的媒体信息类型。

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

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

相关文章

OpenCV颜色变换cvtColor

OpenCV计算机视觉开发实践:基于Qt C - 商品搜索 - 京东 颜色变换是imgproc模块中一个常用的功能。我们生活中看到的大多数彩色图片都是RGB类型的,但是在进行图像处理时需要用到灰度图、二值图、HSV(六角锥体模型,这个模型中颜色的…

Hadoop----高可用搭建

目录标题 **什么是高可用?****⭐搭建的步骤**一.jdk**安装配置**- **要点**: 二.zookeeper**集群配置**- **要点** 三.Hadoop高可用的搭建- **要点**①环境变量的配置②配置文件的修改 ③内容分发④集群任务的初次启动 什么是高可用? 通过冗余设计 自动…

【Rust 精进之路之第15篇-枚举 Enum】定义、变体与数据关联:表达多种可能性

系列: Rust 精进之路:构建可靠、高效软件的底层逻辑 作者: 码觉客 发布日期: 2025年4月20日 引言:当值拥有“选项”——超越结构体的表达力 在上一篇【结构体 Struct】中,我们学习了如何使用结构体将多个相关的数据字段组合成一个有意义的整体。结构体非常适合表示那些…

模拟实现strncat、qsort、atoi

目录 前言 一、模拟实现strncat 参数 代码演示: 二、模拟实现qsort 参数 代码演示: 前言 本文主要是对strncat,qsort,atoi的模拟实现 一、模拟实现strncat C 库函数 char *strncat(char *dest, const char *src, size_t n…

Ubuntu 系统中修改 MySQL 的 sql_mode

在 Ubuntu 系统中修改 MySQL 的 sql_mode 需要编辑 MySQL 的配置文件并重启服务。以下是详细步骤: 步骤 1:定位 MySQL 配置文件 MySQL 配置文件通常位于以下路径之一(具体取决于安装方式): /etc/mysql/my.cnf /etc/m…

进阶算法 第一课:贪心

本文遵循 CC BY-NC-ND 4.0 协议,作者: U•ェ•*U \texttt{U•ェ•*U} U•ェ•*U,转载请获得作者授权。 欢迎大家来到进阶算法第一课:贪心;我会分为以下几点为大家讲解贪心: 什么是贪心。贪心的性质与分类。…

AI领域:MCP 与 A2A 协议的关系

一、为何会出现MCP和A2A 协议是非常重要的东西,只有大家都遵循统一的协议,整体生态才好发展,正如有了HTML,互联网才快速发展,有了OpenAPI, API才会快速发展。 Agent目前是发展最快的领域,从最初…

深度学习训练中的显存溢出问题分析与优化:以UNet图像去噪为例

最近在训练一个基于 Tiny-UNet 的图像去噪模型时,我遇到了经典但棘手的错误: RuntimeError: CUDA out of memory。本文记录了我如何从复现、分析,到逐步优化并成功解决该问题的全过程,希望对深度学习开发者有所借鉴。 训练数据&am…

FramePack V2版 - 支持首尾帧生成,支持LoRA,支持批量,支持50系显卡,一个强大的AI视频生成软件 本地一键整合包下载

FramePack 是斯坦福大学主导开发的视频生成框架,是一种用于视频生成的下一帧(下一帧部分)预测神经网络结构,可以逐步生成视频。FramePack 主要开发者之一,就是业内大名鼎鼎的张吕敏大佬,AI领域的“赛博佛祖…

STM32 HAL 通用定时器延时函数

使用通用定时器TIM3,实现ms、us延时。 delay.c #include "delay.h" #include "stm32f1xx_hal.h"TIM_HandleTypeDef htim3;/*** brief 初始化定时器3用于延时* param 无* retval 无*/ void Delay_Init(void) {TIM_ClockConfigTypeDef sClock…

软件功能测试和非功能测试有什么区别和联系?

软件测试是保障软件质量的核心环节,而软件功能测试和非功能测试作为测试领域的两大重要组成部分,承担着不同但又相互关联的职责。 软件功能测试指的是通过验证软件系统的各项功能是否按照需求规格说明书来正确实现,确保软件的功能和业务流程…

使用Java调用TensorFlow与PyTorch模型:DJL框架的应用探索

在现代机器学习的应用场景中,Python早已成为广泛使用的语言,尤其是在深度学习框架TensorFlow和PyTorch的开发和应用中。尽管Java在许多企业级应用中占据一席之地,但因为缺乏直接使用深度学习框架的能力,往往使得Java开发者对机器学…

Docker安装beef-xss

新版的kali系统中安装了beef-xss会因为环境问题而无法启动,可以使用Docker来安装beef-xss,节省很多时间。 安装步骤 1.启动kali虚拟机,打开终端,切换到root用户,然后执行下面的命令下载beef的docker镜像 wget https:…

metasploit(2)生成dll木马

声明!本文章所有的工具分享仅仅只是供大家学习交流为主,切勿用于非法用途,如有任何触犯法律的行为,均与本人及团队无关!!! 一、dll文件基本概念 DLL 是一种包含可由多个程序同时使用的代码和数…

5V 1A充电标准的由来与技术演进——从USB诞生到智能手机时代的电力革命

点击下面图片带您领略全新的嵌入式学习路线 🔥爆款热榜 88万阅读 1.6万收藏 一、起源:USB标准与早期电力传输需求 1. USB的诞生背景 1996年,由英特尔、微软、IBM等公司组成的USB-IF(USB Implementers Forum)发布了…

使用Python设置excel单元格的字体(font值)

一、前言 通过使用Python的openpyxl库,来操作excel单元格,设置单元格的字体,也就是font值。 把学习的过程分享给大家。大佬勿喷! 二、程序展示 1、新建excel import openpyxl from openpyxl.styles import Font wb openpyxl.…

【设计模式】深入解析代理模式(委托模式):代理模式思想、静态模式和动态模式定义与区别、静态代理模式代码实现

代理模式 代理模式,也叫委托模式。 Spring AOP 是基于动态代理来实现 AOP 的 定义 为其他对象提供一种代理 以控制对这个对象的访问。它的作用就是通过提供一个代理类,让我们在调用目标方法的时候,不再是直接对目标方法进行调用,而…

利用java语言,怎样开发和利用各种开源库和内部/自定义框架,实现“提取-转换-加载”(ETL)流程的自动化

一、ETL 架构设计的核心要素​ 在企业级数据处理场景中,ETL(Extract-Transform-Load)流程自动化是数据仓库、数据湖建设的核心环节。基于 Java 生态的技术栈,我们可以构建分层解耦的 ETL 架构,主要包含以下四层结构&am…

2023蓝帽杯初赛内存取证-8

也是用到pslist模块,加上grep过滤”chrome“即可: vol.py --plugin/opt/volatility/plugins -f memdump.mem --profile Win7SP1x64 pslist | grep "chrome" 第一个是PID,第二个是PPID,第三个是线程数,第四个…

【C语言】动态内存的常见错误

前言&#xff1a; 在上章节中讲解了动态内存的概念和管理的核心函数。 在本章节继续为大家介绍动态内存的常见错误&#xff0c;让大家更好的理解运用。 补充&#xff1a;使用内存函数需要头文件<stdlib.h> 对NULL指针的解引用操作 当使用malloc、calloc或realloc等函…