零基础爬什么值得买的榜单——爬虫练习题目一(答一)

news2024/11/15 10:51:50

完蛋 蚌埠住了

    • 引言
      • 日常吐槽
      • 言归正传
    • 步骤一
      • 分析网页
      • 分析网络加载
        • 详细说说网络面板
        • 实际操作
    • 测试代码
    • 测试结果
    • 知识点
      • JS和Fetch/XHR是什么?有什么关联?
      • 网页数据的中文为什么是16进制数,以及如何判断?
    • 结尾

引言

日常吐槽

今天剪辑好了一个视频
英文版
Boss说语速太快,让我调慢
说看视频的人母语很多不是英语
我用的是AI的正常语速
哪里快了(一直都是这样的好不啦)
这么多年了,你应该找找自己的问题(李主播上身)
是的咧
这视频就应该为您量身打造
你印象中的客户都跟您一样
在这里插入图片描述

绝了
视频越改
质量越差
当然
我自己也不是科班
拍的也不是很好
有哪个大佬指条明路呀
在这里插入图片描述

言归正传

不是要爬取这个什么值得买吗
我就爬,昨天也发了文章(问篇)

发现一堆问题
我们一步步解决
一步步来
所以
这是一个多集
会详细且细致的一步步分析
搞清楚里面的前因后果
爬虫与反爬知识


你觉得深入好
还是把代码直接搞出来发布好呢?
在这里插入图片描述

步骤一

分析网页

一般之前爬取的都是直接加载在html上面
可是这个不一样
他会动
在这里插入图片描述
看到没
他是通过JS加载的(后面发现不是 XX)
如果我们直接爬取页面数据
最多也就第一页20个数据
后面加载的数据我们就爬取不到

分析网络加载

我们按F12,调出浏览器的开发工具
在这里插入图片描述我用的是谷歌浏览器
之前的文章不是介绍我用的三大浏览器嘛
(找了一下 发现,MD在草稿箱,文章还没写完)

我爬虫用的开发者工具主要也是用谷歌
简洁 兼容性最好
在这里插入图片描述
开发工具记住这三个按钮

  1. 选择网络面板
  2. 清空网络日志
  3. 录制网络日志

你打开网站然后
就会有网络日志

你先用2清理一下
然后
到达指定位置
再用3开启记录
记录完之后
避免有新的日志干扰

记得在点击3关闭录制

详细说说网络面板

Network(网络)面板是用于监控和分析网页加载时所有的网络请求和响应情况的一个重要功能区。当用户访问网页或在网页上执行任何导致发送网络请求的操作(如点击链接、提交表单、加载图片等),Network面板都会捕获并显示这些HTTP/HTTPS请求及其详细信息。

具体来说,Network面板可以用来:

  1. 查看请求列表:展示所有页面加载过程中发起的网络请求的时间顺序和状态。
  2. 检查请求详细信息:包括请求方法(GET、POST等)、请求URL、HTTP头信息、请求体内容以及响应头信息、返回的状态码、响应体内容(JSON、HTML、CSS、JavaScript等)和加载时间。
  3. 性能分析:通过Timeline视图了解资源加载的详细时间线,帮助诊断性能瓶颈,如DNS查询时间、TCP连接建立时间、TLS握手时间、首字节时间、内容下载完成时间等。
  4. 缓存控制:查看哪些资源是从缓存中加载的,哪些是重新从服务器获取的。
  5. 数据筛选与排序:可以根据请求类型(XHR、Fetch、Doc、Stylesheet、Image等)、文件大小、加载时间等多种条件进行筛选和排序。
  6. 模拟不同网络环境:开发者还可以利用Network面板模拟不同的网络状况,如限制带宽、增加延迟等,以测试网页在各种网络条件下的加载效果。
实际操作

在这里插入图片描述
下滑到要加载新数据的地方,但是还没加载,或者直接
清空网络日志
开启录制
在这里插入图片描述
下滑网页,加载新的数据
在这里插入图片描述
在这里插入图片描述
加载完记得再点一下 关闭录制
文件类型过滤,只看JS(只熟悉JS)
没有 心里苦
在这里插入图片描述
再点点别的(Fetch?XHR)
耶,有!快看看
在这里插入图片描述
双击数据,点击响应
在这里插入图片描述
在这里插入图片描述
发现都是这种码 \uXXXX
这是16进制数,看了下英文没问题,只有中文编码不对
不过这个 数据应该就是我们要的商品数据了
因为里面有article_id 这些关键信息
点击(Headers)看看
在这里插入图片描述
看到最后面得这个page,带有页码的更能说明是我们要的数据
应该可以推断,后面加载的数据可以通过改边页码来获取
我们继续下拉
看看请求头都有什么
居然有Cookie,但我没登录呀
先不理
最后把Referer 和 User-Agent Copy 一下
在这里插入图片描述
在这里插入图片描述

测试代码

import requests  # 导入requests库

url = "https://faxian.smzdm.com/json_more?filter=h3s0t0f163c5&page=2"  # 设置请求的URL地址

headers = {
    'Referer': 'https://faxian.smzdm.com/h3s0t0f163c5p1/',  # 设置请求头的Referer字段
    'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36'  # 设置请求头的User-Agent字段
}

# 模拟请求
response = requests.get(url, headers=headers)  # 发送GET请求,并将返回的响应存储在response变量中

print(response.status_code)  # 打印响应的状态码
print(response.text)  # 打印响应的文本内容

测试结果

在这里插入图片描述
没有问题
返回的状态码正常
返回的文本内容跟响应也是一样的
在这里插入图片描述

怎么这么多16进制数?
怎么办?

其中有两个问题我们还留着

知识点

JS和Fetch/XHR是什么?有什么关联?

JavaScript (JS) 是一种广泛应用于网页和网络应用开发的高级、动态、弱类型脚本语言。在浏览器环境中,JavaScript 能够与用户交互,处理DOM操作,执行异步编程,以及实现前后端通信。

XMLHttpRequest (XHR) 是一个由W3C标准定义的API,它允许JavaScript在不刷新页面的情况下发送HTTP(或HTTPS)请求到服务器并接收数据。自AJAX(Asynchronous JavaScript and XML)技术流行以来,XHR一直是浏览器中实现异步通信的核心技术之一,它使得Web应用程序能够动态加载内容,并且更新页面部分而无需完全刷新整个页面。

Fetch API 是一个现代的、基于Promise的、用于取代传统XHR的网络请求API。Fetch提供了更简洁、易于使用的接口来获取资源,支持各种HTTP方法、请求头、响应体处理以及可选的缓存策略等。Fetch同样可以用来进行异步数据交换,但其语法更加现代化且符合ES6 Promise规范。

关联:

  • Fetch 和 XHR 都是用于在浏览器环境下进行客户端与服务器之间数据交换的技术。
  • Fetch 是对 XMLHttpRequest 的改进和简化,提供了一种更接近现代JavaScript编程风格的API。
  • Fetch 返回的是Promise对象,这使得它可以无缝集成到异步流程控制如async/await中,提高了代码的可读性和错误处理能力。
  • Fetch 对某些情况下的错误处理和状态判断需要开发者手动检查Response.ok属性,而XHR通过事件回调机制处理这些状态。
  • Fetch 提供了更好的流处理支持,包括ReadableStream和Blob等。
  • Fetch 相比于传统的XHR,在某些旧版浏览器中可能没有很好的兼容性,因此在实际项目中可能需要polyfill或者降级回退到XHR方案。

清晰明了,整理成表格

技术名称描述关键特性
JavaScript (JS)一种高级、动态、弱类型脚本语言,广泛应用于网页和网络应用开发。支持DOM操作、事件处理、异步编程等功能,允许在客户端与服务器之间进行数据交互。- 动态类型系统
- 异步编程(Promise, async/await)
- DOM操作和事件驱动
- 客户端脚本语言
XMLHttpRequest (XHR)W3C定义的API,用于浏览器环境下的HTTP(S)请求,是AJAX技术的核心组成部分。通过XMLHttpRequest对象,JavaScript可以发送同步或异步请求至服务器并接收响应数据,实现页面无刷新更新。- 同步/异步请求
- 支持多种HTTP方法(GET, POST等)
- 自定义请求头和响应处理
- 需要手动管理请求状态和回调函数
Fetch API现代化的网络请求API,旨在简化并替代传统的XHR。基于Promise设计,提供更简洁、灵活的接口以获取资源,并兼容现代JavaScript编程范式。- 基于Promise
- 更简洁的语法
- 支持Request/Response对象
- 可配置缓存策略
- 需要手动检查Response.ok来判断请求成功与否

关联性:

  • JavaScript 是执行 Fetch 和 XHR 请求的基础环境。
  • XHR 是较早的浏览器内置API,用于异步通信。
  • Fetch API 是对 XHR 的现代化改进,提供了更符合现代编程习惯的API设计和更好的错误处理机制。

更加清晰啦
这告诉我们
能用图别用字

网页数据的中文为什么是16进制数,以及如何判断?

这种形式(\uXXXX)在JSON、JavaScript以及一些编程语言中用来表示Unicode字符,主要基于以下原因:

  1. 编码兼容性:Unicode是一种国际标准的字符集,包含了世界上几乎所有的字符和符号。使用\uXXXX转义序列可以确保文本数据在不同系统、平台和编码环境间传输时保持一致。

  2. JSON规范要求:JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它规定字符串中的非ASCII字符必须以\u0000\uFFFF之间的十六进制转义序列表示。\uXXXX表示一个4字节的Unicode字符码点。

  3. JavaScript语法:在JavaScript字符串字面量中,也可以用\uXXXX来表示Unicode字符,以便于在代码中插入特殊或非英文字符。

判断方法:

  • 当你在解析JSON或JavaScript字符串时,如果看到\u后面跟着四个十六进制数字,就可以断定它是Unicode转义序列,代表一个特定的Unicode字符。

  • 在Python中,你可以尝试将这样的字符串解码为普通文本,例如通过json.loads()函数加载JSON字符串,或者直接将\uXXXX转换为对应的Unicode字符(在Python 3中,普通的字符串就能直接处理Unicode字符,无需额外转换)。

# 解析JSON字符串
import json

data = '{"name": "\u4eac\u4eab\u7ea2\u5305"}'
json_data = json.loads(data)
print(json_data["name"])  # 输出:"京享红包"

通过以上方式,你可以识别并正确处理这类Unicode转义序列形式的文本数据。

结尾

不知不觉
一个步骤一就有这么多东西
细节和问题还是蛮多的
暂时打住
否则要变成裹脚布(又臭又长)了
在这里插入图片描述

且待我解决16进制数码的这个问题
再来发文哈
如果各位有什么高招也可以知会我下
道友在此谢过!!!

那么
在这里插入图片描述

有缘再见

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

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

相关文章

力扣题目训练(5)

2024年1月29日力扣题目训练 2024年1月29日力扣题目训练345. 反转字符串中的元音字母349. 两个数组的交集350. 两个数组的交集 II96. 不同的二叉搜索树97. 交错字符串44. 通配符匹配 2024年1月29日力扣题目训练 2024年1月29日第五天编程训练,今天主要是进行一些题训…

回归预测 | Matlab基于OOA-LSSVM鱼鹰算法优化最小支持向量机的数据多输入单输出回归预测

回归预测 | Matlab基于OOA-LSSVM鱼鹰算法优化最小支持向量机的数据多输入单输出回归预测 目录 回归预测 | Matlab基于OOA-LSSVM鱼鹰算法优化最小支持向量机的数据多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab基于OOA-LSSVM鱼鹰算法优化最小…

Windows断开映射磁盘提示“此网络连接不存在”,并且该磁盘直在资源管理器中

1、打开注册表编辑器 快捷键winR 打开“运行”, 输入 regedit 2、 删除下列注册表中和无法移除的磁盘相关的选项 \HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\ 3、打开“任务管理器”,重新启动“Windows资源…

C++指针比较

内存中各个数据的存放方式。 数组str1、str2、str3、str4都是在栈中分配的,内存中的内容都为“abc”加一个“\0”,但是他们的位置是不同的,因此代码第15行和第16行输出的都是0. 指针str5、str6、str7、str8也是在栈中分配的,他们…

Shell中的awk

一、awk 1.1.awk工作原理 逐行读取文本,默认以空格或tab键为分隔符进行分隔,将分隔所得的各个字段保存到内建变量中,并按模式或者条件执行编辑命令。 awk倾向于将一行分成多个"字段"然后再进行处理。 awk信息的读入也是逐行读取…

Apple Vision Pro 评测:这款顶尖头显仅是对未来的初步探索

原文:Apple Vision Pro Review: The Best Headset Yet Is Just a Glimpse of the Future 作者:Joanna Stern 戴上 Apple Vision Pro 混合现实头显整整近 24 小时后,有几件事让我颇感意外: 我居然没感到恶心。我竟然高效完成了大…

springboot---四大核心

四大核心 Starter简介总结 Autoconfigure简介示例原理自定义starter打包实践 总结 CLIActuator Starter 简介 springboot项目中几乎项目依赖中基本上全是各种各样的starter, 那么到底什么是starter? starter是一组方便的依赖描述符,当我们使用它时,可…

推荐系统|排序_多目标模型

文章目录 四大特征用户特征物品特征统计特征场景特征 训练过程中会遇到的问题 四大特征 ID相当于是人拥有的身份证,能够唯一确定出一个人 用户特征 主要指的是用户ID和用户画像 物品特征 主要是指物品ID和物品画像以及物品持有人。 统计特征 统计特征既包括对…

Java并发基础:CompletionService全面解析!

内容概要 CompletionService的优点在于能够解耦任务提交与结果获取,有效的整合线程池与阻塞队列,实现任务完成顺序的处理,提升系统吞吐量,它简化了多线程编程的复杂性,使开发者能够更专注于业务逻辑,而不必…

【昕宝爸爸小模块】深入浅出详解之常见的语法糖

深入浅出详解之常见的语法糖 一、🟢关于语法糖的典型解析二、🟢如何解语法糖?2.1🟢糖块一、switch 支持 String 与枚举2.2📙糖块二、泛型2.3📝糖块三、自动装箱与拆箱2.4🍁糖块四、方法变长参数…

TOP100 矩阵

1.73. 矩阵置零 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 提示&#xff1a; m matrix.lengthn matrix[0].length1 < m, n < 200-2^31 < matrix[i][j] < 2^31 - 1 思路&#xf…

宏景eHR FrCodeAddTreeServlet SQL注入漏洞复现

前言 免责声明&#xff1a;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。 一、产…

【排序算法】C语言实现随机快排,巨详细讲解

文章目录 &#x1f680;前言&#x1f680;快排的核心过程partition&#xff08;划分过程&#xff09;&#x1f680;快排1.0&#x1f680;随机快速排序&#x1f680;稳定性 &#x1f680;前言 铁子们好啊&#xff01;继续我们排序算法今天要讲的是快排&#xff0c;通常大家所说…

❤搭建一个Springboot项目(ltbjava)

❤从0实现一个项目 搭建好我们的java环境和运行的IDEA软件以后&#xff0c;接下来我们就应该实现一个自己的项目了 0 项目描述 基于jdk17 的学习&#xff0c;因为据说最新的spring框架的最低要求是jdk17Maven 3.8.7PS&#xff1a;springboot3.0版本以上必须用jdk171、 项目创…

STM32F407移植OpenHarmony笔记6

继上一篇笔记&#xff0c;编译好STM32的裸机程序&#xff0c;能点亮LED灯了。 下一步就是启动liteos_m内核了。 不过为了更好的调试代码&#xff0c;需要先把printf重定向到串口&#xff0c;基于gcc的printf重定向和Keil不一样。 直接新建printf.c&#xff0c;在里面重写printf…

摄像头监控系统/视频监控云平台EasyCVR接入单兵设备后如何配置移动规矩

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。音视频流媒体视频平台EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;具体控可实现视频监控直播、视频轮播、视频录像…

C#学习笔记_类(Class)

类的定义 类的定义是以关键字 class 开始&#xff0c;后跟类的名称。类的主体&#xff0c;包含在一对花括号内。 语法格式如下&#xff1a; 访问标识符 class 类名 {//变量定义访问标识符 数据类型 变量名;访问标识符 数据类型 变量名;访问标识符 数据类型 变量名;......//方…

氢气泄漏检测仪使用方法:守护安全,从细节开始

随着科技的发展&#xff0c;我们的生活和工作环境中充满了各种潜在的危险。其中&#xff0c;氢气作为一种清洁能源&#xff0c;其使用日益广泛&#xff0c;但同时也带来了泄漏的风险。为了确保我们的安全&#xff0c;了解并正确使用氢气泄漏检测仪至关重要。下面将详细介绍氢气…

yum一直出现正在尝试其它镜像... 解决方法

更改yum镜像源地址为阿里云镜像即可 1. 去ail云yum镜像源官网 阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区 (aliyun.com) 2. 选择自己对应的操作系统这里以centos7演示&#xff1a; 3. 先备份原yum配置文件 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/Ce…

OC源码 - FailureDetectionPeriodBlockMinutes参数解读

FailureDetectionPeriodBlockMinutes 看看官方文档中对该参数如何描述 orchestrator will detect failures to your topology, always. As a matter of configuration you may set the polling frequency and specific ways for orchestrator to notify you on such detectio…