【爬虫基础】第二部分 爬虫基础理论 P3/3

 上节内容回顾:【爬虫基础】第一部分 网络通讯 P1/3-CSDN博客

                         【爬虫基础】第一部分 网络通讯-Socket套接字 P2/3-CSDN博客

                         【爬虫基础】第一部分 网络通讯-编程 P3/3-CSDN博客 

                         【爬虫基础】第二部分 爬虫基础理论 P1/3-CSDN博客

                         【爬虫基础】第二部分 爬虫基础理论 P2/3-CSDN博客

爬虫相关文档,希望互相学习,共同进步

风123456789~-CSDN博客


前言

1.知识点碎片化:每个网站实现的技术相似但是有区别,要求我们根据不同的网站使用不同的应对手段。主要是常用的一些网站爬取技术。

2.学习难度:入门比web简单,但后期难度要比web难,在于爬虫工程师与网站开发及运维人员的对抗。比如你写了爬虫但是被网站运维人员发现后添加反爬,那么就要解决反爬。即平台更新换代,爬虫策略需要实时更新。

3.学习特点:以摸个网站爬虫为讲解对象,即一个技术点的案例。

4.后续发展:要求掌握的东西多,工作中根据工作需要涉及到更多没有接触的知识。

5.法律层面:爬虫相关工作属于灰色地带,目前国内现行法律对于爬虫相关评判还没有明确制度。

6.建议:好记性不如烂笔头,建议多找网站进行爬取联系,同时做好笔记。

1.概述

爬虫通常会遵循一定的规则和算法,以确保能够高效地遍历互联网并收集到所需的数据。

 本节章节:
    第一节  爬虫理论原理
    第二节  http协议
    第三节  chrome浏览器抓包说明 (本文)   

第一节 爬虫理论原理 见:【爬虫基础】第二部分 爬虫基础理论 P1/3-CSDN博客

第二节 http协议         见: 【爬虫基础】第二部分 爬虫基础理论 P2/3-CSDN博客

2.进入开发者模式 

开发者工具使用:以Google Chrome浏览器为例,Windows和Linux平台按F12, macOS选择 视图 ->开发者 ->开发者工具或直接使用alt+command+i快捷键,另一通用操作是在网页右击选择检查。

       右击检查-开发者工具-network,刷新后列出的是刷新时访问这个网络地址所发送的所有请求。随便点击一个网络包,header时,找到请求头。重点观察请求头部分。

常用标签选项说明

Elements:元素,用于查看或修改HTML标签

Console:控制台,执行js代码,显示脚本输出的调试信息

Sources:源代码,查看静态资源文件,断点调试js代码

Network:网络,查看http协议的通信过程,http请求的详细信息,如请求头、响应头等

3. chrome浏览器抓包说明 img

知识点:
    1.headers请求头说明
    2.无痕窗口
    3.开发者工具工作簿(网络)
        1.preserve log
        2.filter过滤
        3.类别区筛选
    4.放大镜搜索
    5.search搜索
    6.console控制台
    7.sources来源
    8.element元素

3.1 headers 请求头说明

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cache-Control: max-age=0
Connection: keep-alive
Cookie: BIDUPSID=D18E0CF343C1DC46DC0CA99A16BE18C3; PSTM=1682317572; BD_UPN=12314753; newlogin=1; BAIDUID=35D056484E32488A12B4E189D11FA2CE:FG=1; BAIDUID_BFESS=35D056484E32488A12B4E189D11FA2CE:FG=1; COOKIE_SESSION=15_8_6_8_5_11_0_0_6_4_30_3_2781_82656_3_0_1682604006_1682590568_1682604003%7C9%2382625_24_1682590530%7C6; ZFY=9ZFyWo7Lo:BUAL:ASW4KskwxGRSb0pDGxJPrZe1i0sXKc:C; B64_BOT=1; ariaDefaultTheme=undefined; RT="z=1&dm=baidu.com&si=099661dc-c724-4b0c-9509-1fe74c89ab54&ss=lh0aynxo&sl=1&tt=1rl&bcn=https%3A%2F%2Ffclog.baidu.com%2Flog%2Fweirwood%3Ftype%3Dperf&ld=2js&nu=4u4ak2th&cl=74vq&ul=9fq9&hd=9fqp"; BA_HECTOR=8ha0a1a4a5258h8k002k212t1i4pokq1m; BDORZ=FFFB88E999055A3F8A630C64834BD6D0; channel=www.2345.com; baikeVisitId=831ddf12-d1d1-425e-aa33-fb8119db1e31; ab_sr=1.0.1_Y2U3YzkxYjRmN2Q2MTFkMjhiZTVlZTU3NDFhYjQ0NTBjNDhlNWFmM2VhNGUzNDg1NzZkZGIwNTFmNWM5ODY5NDQ3YjMxMjc4NWNmM2Y3ODhiNmUxMGQ0MTE0NDM2NDgwODM2OTIyYmI5NzJmYTJhYTNiMDJiY2YwN2I0ODc4ODFmZDg4Yjg5N2E0ZDRjNmM1MDVjN2QyOWZiMDBlODc4NQ==; BD_HOME=1; H_PS_PSSID=38516_36545_38529_38469_38538_38468_38486_37923_37709_26350_38544
Host: www.baidu.com
sec-ch-ua: "Chromium";v="112", "Google Chrome";v="112", "Not:A-Brand";v="99"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36

说明:

        user_agent:浏览器的身份,目的:欺骗服务器
        Cookie:用户(浏览器)的缓存,缓存的用户信息(身份信息)或者是浏览记录信息
                       身份信息在库中,有一部分是记录权限信息、加密信息等权限机制

        Host:服务器的域名
        referer:来源,目的是告诉对方服务器,本请求的来源。

3.2 无痕窗口

(1)进入无痕模式

      在浏览器,点击右键 或者浏览器右上角,点击“打开新的无痕模式窗口”,即可进入。

 (2)说明

Chrome 不会保存:
      1.您的浏览记录
      2.Cookie 和网站数据
      3.在表单中填写的信息

重点: 

无痕模式下:

      对地址访问成功,代表该地址的headers只需要一个ua一个键值对
      通过无痕模式来判断地址的访问需要那些headers的键值对

非无痕模式下:
       打开一个新的浏览器窗口,访问地址,能够访问,说明header中需要ua,cookie即可

       除上述操作,地址还是不能够访问,则需要携带referer字段

3.3.开发者工具工作簿(网络)

(1)进入

如浏览器进入开发者模式后,输入网址 https://www.2345.com/tg36612.htm

(2)filter过滤

(3)功能区

A. preserve log

    一般情况下,每刷新一次网址,会重新加载,不会保留之前的包。

    但如果勾上“preserver log”, 打开新网址时依然会保留之前的抓包情况。

如下: 打开百度 -》抓包后 --》同页面打开淘宝 --》勾选了后发现百度的包依然在

B. filter过滤

将网址中的一部分输入过滤器,快速找到网址中包含内容的网址。

目的:过滤抓包区域的包,规则自定义

如:tg36612.htm

说明:一般访问网址时,浏览器的包会在第一个位置

C.类别区筛选 

如下图:

说明:

    all: 显示所有包
    XHR:异步加载的包显示位置

     js:js文件的请求
    CSS:CSS文件的请求
     img:对图片的请求

     WS: 实时爬虫

3.4.放大镜搜索

点击放大镜,左边输入框,可进行“全局搜索”。其实搜索了非js的包。

3.5.search搜索

点击右上角,点击三个点,即可打开 seach 搜索。

输入搜索内容,可进入全局搜索。

 

3.6.console控制台

有两个位置:1)seach 左边的console   2)开发者工具中提供的tab

控制台的作用:为了执行前端的代码。

3.7.sources来源

源代码,查看静态资源文件,断点调试js代码

帮助进行代码的断点调试,主要js 断点调试。

# 代码的调试观察
# js断点调试

3.8.element元素

代表当前网页显示给你的所有数据的标签结构。


1)同步加载:在浏览器上你能观察到你要采集的数据

                        在浏览器的地址的响应中,找到了你想采集的数据,同步加载
2)异步加载:在浏览器上你能观察到你要采集的数据

                        在浏览器的地址的响应中,没有找到你想采集的数据,异步加载

3.9 Network 的主要信息

Headers:http的头信息

Response:http的响应体信息

General:主要信息

Response Headers:http响应头信息

Request Headers:http请求头信息

get 请求报文:

img

post请求报文:

img

注意:法律和道德问题

在使用爬虫时,需要遵守一定的法律和道德准则,尊重网站的隐私政策和使用条款,确保合法和负责任地使用爬虫技术。

今天先到这里吧~~

预知后事如何,且听下回分解~ ok


项目管理--相关知识   

项目管理-项目绩效域1/2-CSDN博客

项目管理-项目绩效域1/2_八大绩效域和十大管理有什么联系-CSDN博客

项目管理-项目绩效域2/2_绩效域 团不策划-CSDN博客

高项-案例分析万能答案(作业分享)-CSDN博客

项目管理-计算题公式【复习】_项目管理进度计算题公式:乐观-CSDN博客

项目管理-配置管理与变更-CSDN博客

项目管理-项目管理科学基础-CSDN博客

项目管理-高级项目管理-CSDN博客

项目管理-相关知识(组织通用治理、组织通用管理、法律法规与标准规范)-CSDN博客


Oracle其他文档,希望互相学习,共同进步

Oracle-找回误删的表数据(LogMiner 挖掘日志)_oracle日志挖掘恢复数据-CSDN博客

oracle 跟踪文件--审计日志_oracle审计日志-CSDN博客

ORA-12899报错,遇到数据表某字段长度奇怪现象:“Oracle字符型,长度50”但length查却没有50_varchar(50) oracle 超出截断-CSDN博客

EXP-00091: Exporting questionable statistics.解决方案-CSDN博客

Oracle 更换监听端口-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【子网掩码计算器:Python + Tkinter 实现】

子网掩码计算器:Python Tkinter 实现 引言代码功能概述代码实现思路1. 界面设计2. 功能实现3. 事件处理 子网掩码计算器实现步骤1. 导入必要的库2. 定义主窗口类 SubnetCalculatorApp3. 创建菜单栏4. 创建界面组件5. 判断 IP 地址类别6. 计算子网信息7. 其他功能函…

【第十节】C++设计模式(结构型模式)-Flyweight( 享元)模式

目录 一、问题背景 二、模式选择 三、代码实现 四、总结讨论 一、问题背景 享元模式(Flyweight Pattern)在对象存储优化中的应用 在面向对象系统的设计与实现中,创建对象是最常见的操作之一。然而,如果一个应用程序使用了过多…

macOS - 使用 tmux

文章目录 安装 tmux使用更多快捷键说明 安装 tmux brew install tmux使用 在终端输入 tmux 进入 tmux 界面,然后 输入 Control Option B 进入交互模式 输入 % 左右分栏," 上下分割 上一个窗格:{,下一个:} PS…

【洛谷贪心算法题】P1094纪念品分组

该题运用贪心算法,核心思想是在每次分组时,尽可能让价格较小和较大的纪念品组合在一起,以达到最少分组的目的。 【算法思路】 输入处理:首先读取纪念品的数量n和价格上限w,然后依次读取每件纪念品的价格,…

16. LangChain实战项目2——易速鲜花内部问答系统

需求简介 易束鲜花企业内部知识库如下: 本实战项目设计一个内部问答系统,基于这些内部知识,回答内部员工的提问。 在前面课程的基础上,需要安装的依赖包如下: pip install docx2txt pip install qdrant-client pip i…

Minio搭建并在SpringBoot中使用完成用户头像的上传

Minio使用搭建并上传用户头像到服务器操作,学习笔记 Minio介绍 minio官网 MinIO是一个开源的分布式对象存储服务器,支持S3协议并且可以在多节点上实现数据的高可用和容错。它采用Go语言开发,拥有轻量级、高性能、易部署等特点,并且可以自由…

Spring AI:让AI应用开发更简单

文章目录 引言什么是Spring AI?核心特性 Spring AI的核心组件ChatClient:聊天模型示例代码图示 ImageClient:图像生成示例代码图示 Prompt Templates:提示词模板示例代码 Spring AI的优势示例项目:智能机票助手代码实现…

【C】链式二叉树算法题1 -- 单值二叉树

leetcode链接https://leetcode.cn/problems/univalued-binary-tree/description/ 1 题目描述 如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。只有给定的树是单值二叉树时,才返回 true;否则返回 false。 示例 1&#xff1…

什么是最终一致性,它对后端系统的意义是什么

最终一致性(Eventual Consistency)是分布式系统中的一种一致性模型。与传统的强一致性模型不同,最终一致性并不要求系统在任何时刻都保持一致,而是保证在足够的时间后,所有节点的数据最终会达到一致的状态。换句话说,系统允许短时间内出现数据的不一致性,但最终会通过某…

掌握大模型高效任务流搭建(一):构建LangChain任务流

前言: 在LangChain框架中,“链”占据着核心地位。它允许我们将众多任务模块串联起来,构建出富有弹性的任务流。借助这种链式结构,我们能够处理复杂的逻辑,并实现任务的自动化。在实际场景里,链式操作极大地…

目标检测——数据处理

1. Mosaic 数据增强 Mosaic 数据增强步骤: (1). 选择四个图像: 从数据集中随机选择四张图像。这四张图像是用来组合成一个新图像的基础。 (2) 确定拼接位置: 设计一个新的画布(输入size的2倍),在指定范围内找出一个随机点(如…

塑造网络安全的关键事件

注:本文为 “网络安全” 相关文章合辑。 机翻,未校。 Timeline of Cyber Security: Key Events that Shaped the Field 网络安全时间表:塑造该领域的关键事件 October 29, 2023 Cyberattacks are an everyday threat, always changing. T…

题解 | 牛客周赛82 Java ABCDEF

目录 题目地址 做题情况 A 题 B 题 C 题 D 题 E 题 F 题 牛客竞赛主页 题目地址 牛客竞赛_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ 做题情况 A 题 判断字符串第一个字符和第三个字符是否相等 import java.io.*; import java.math.*; import java.u…

Redis 高可用性:如何让你的缓存一直在线,稳定运行?

🎯 引言:Redis的高可用性为啥这么重要? 在现代高可用系统中,Redis 是一款不可或缺的分布式缓存与数据库系统。无论是提升访问速度,还是实现数据的高效持久化,Redis 都能轻松搞定。可是,当你把 …

uniapp-原生android插件开发摘要

uni-app在App侧的原生扩展插件,支持使用java、object-c等原生语言编写,从HBuilderX 3.6起,新增支持了使用uts来开发原生插件。 基础项目 UniPlugin-Hello-AS工程请在App离线SDK中查找 基础项目(App离线SDK)已经配置好了自定义插件所需要的…

【定昌Linux系统】部署了java程序,设置开启启动

将代码上传到相应的目录,并且配置了一个.sh的启动脚本文件 文件内容: #!/bin/bash# 指定JAR文件的路径(如果JAR文件在当前目录,可以直接使用文件名) JAR_FILE"/usr/local/java/xs_luruan_client/lib/xs_luruan_…

SpringBoot源码解析(十):应用上下文AnnotationConfigServletWebServerApplicationContext构造方法

SpringBoot源码系列文章 SpringBoot源码解析(一):SpringApplication构造方法 SpringBoot源码解析(二):引导上下文DefaultBootstrapContext SpringBoot源码解析(三):启动开始阶段 SpringBoot源码解析(四):解析应用参数args Sp…

Unity小功能实现:鼠标点击移动物体

1、功能描述 当玩家点击鼠标时,场景中的物体会移动到鼠标点击的位置。这个功能可以用于控制角色移动、放置物体等场景。 2、实现步骤 创建Unity项目:首先,打开Unity并创建一个新的3D项目。 添加3D物体:在场景中创建一个3D物体&am…

游戏引擎学习第127天

仓库:https://gitee.com/mrxiao_com/2d_game_3 为本周设定阶段 我们目前的渲染器已经实现了令人惊讶的优化,经过过去两周的优化工作后,渲染器在1920x1080分辨率下稳定地运行在60帧每秒。这个结果是意料之外的,因为我们没有预计会达到这样的…

Opencv 图像基本操作

1.1 数据读取-图像 opencv读取的格式是BGR而不是RGB import cv2 import matplotlib.pyplot as plt import numpy as np %matplotlib inline # 在Notebook的输出单元格内嵌入绘制的图形,而不在新窗口中显示img cv2.imread(cat.jpg) # cv2.IMREAD_COLOR&#xff1a…