当前位置: 首页 > news >正文

【Python爬虫 js渲染思路一】

Python爬虫 破解js渲染思路一

当我们在谈论网页js渲染的时候,我们在谈论什么

js渲染网页,从某种程度来说,是指单纯的http请求,返回的文本数据,与我们在浏览器看到的内容,相距甚远.其可包括为以下几点:
  1. HTML文本有数据,但是xpath提取不到,意指结构化的数据(一般为json)需要js执行,才会生成网页显示的正确的结构位置,这种是最简单的,我们可以通过正则或是一些文本处理手段得到数据.
  2. HTML文本有数据,但是数据与网页有差异,举个栗子:假如我们要爬取一个购物网站,这个网站你想要的是SGD的价格,但你发现文本中却是USD的价格,通过抓包你发现网站并没有传输SGD的价格,这个时候你通过打断点发现价格需要经过文本传输的USD以及汇率,通过专门的汇率的js转换为正确的SGD价格.
  3. HTML文本没有数据,通过抓包你发现,数据是通过请求额外的API得到的,这里会存在几种情况:
    1. API可以无限制请求
    2. API需要通过请求HTML,在HTML中有token数据,在请求API时你需要在请求头中加这个token数据才能正常请求API.
    3. API需要通过请求HTML,通过HTML返回的response中的cookie中某些数据,在请求API的时候,请求头需要在cookie中添加这些数据,才能正确拿到数据。
    4. 2和3两种情况合并在一起,才能正确返回数据。
    5. API需要账户登录生成的token才能正常请求。
    6. 需要先请求别的API,通过该API得到的参数,再请求正确的API。

举个栗子

现在我们要抓一个js渲染的easy网站
网站 url
# 我们想要抓取一些衣服的数据
https://www.fashion.com/collections/halter-tops
返回的html文本中,我们发现html文本的数据并没有包含所有的衣服数据,例如:价格。

在这里插入图片描述
在这里插入图片描述

在抓包中搜索,发现数据来自API

在这里插入图片描述

查看API请求,发现一些端倪

在这里插入图片描述
该网站在请求加了两个额外参数,很显然,如果不在请求的时候加上这两个参数,你永远得不到正确的数据。那么这两个参数要怎么得到呢?

面对未知参数,一般先搜为敬,先假设很简单

搜索后你发现,咦,原来某些js文件有该参数
在这里插入图片描述

如何缩小范围?无他,唯有穷举。终于在某个js文件,你发现了端倪。

在这里插入图片描述
好家伙,居然一个字都没改,真是妙哉。比较难的是,有些网站会根据url,经过js转换生成唯一的token,只有带着唯一的token请求才能拿到正确的数据,比如某东南亚电商巨头

正确的请求

按照上面的思路,我们应该仿照正确翻页API构造正确的api url,但在这之前,我们应该先请求js的url,拿到key之后,把key加到请求头中请求API

相关文章:

【Python爬虫 js渲染思路一】

Python爬虫 破解js渲染思路一 当我们在谈论网页js渲染的时候,我们在谈论什么 js渲染网页,从某种程度来说,是指单纯的http请求,返回的文本数据,与我们在浏览器看到的内容,相距甚远.其可包括为以下几点&…...

智慧安防AI视频智能分析云平台EasyCVR加密机授权小tips

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

C# Windows 窗体控件中的边距和填充

可以将 Margin 属性、Left、Top、Right、Bottom 的每个方面设置为不同的值,也可以使用 All 属性将它们全部设置为相同的值。 在代码中设置Margin,元素的左边设置为5个单位、上边设置为10个单位、右边设置为15个单位和下边设置为20个单位。 TextBox myT…...

腾讯云2核4G轻量服务器5M带宽支持多少人同时在线?

腾讯云轻量2核4G5M带宽服务器支持多少人在线访问?5M带宽下载速度峰值可达640KB/秒,阿腾云以搭建网站为例,假设优化后平均大小为60KB,则5M带宽可支撑10个用户同时在1秒内打开网站,从CPU内存的角度,网站程序效…...

01 初识FPGA

01 初识FPGA 一.FPGA是什么 FPGA(Filed Programmable Gate Array),现场可编程门阵列,一种以数字电路为主的集成芯片,属于可编程逻辑器件PLD的一种。 1.1 两大巨头 Xilinx(赛灵思)Altera(阿尔特拉&#…...

设备巡检管理系统与隐患排查治理

如何才能将设备巡检做细做规范呢? 1.制定巡检制度和流程:通过建立明确的巡检制度和流程,并将其纳入企业的安全管理体系中。利用凡尔码平台制定一个详细的巡检计划,包括巡检的时间、地点、内容、检查方法和注意事项等,帮…...

linux之cpu模拟负载程序

工作中我们经常会遇到这样的问题,需要模拟cpu的负载程序,例如模拟cpu占有率抬升10%、20%、50%、70%等,那这样的程序应该如何实现呢?它的原理是什么样的呢? 思想 创建一个应用程序,该应用程序的作用可以根…...

zookeeper节点数据类型介绍及集群搭建

一、zookeeper介绍 zookeeper官网:Apache ZooKeeper zookeeper是一个分布式协调框架,保证的是CP,即一致性和分区容错性;zookeeper是一个分布式文件存储系统,文件节点可以存储数据,监听子文件节点等可以实…...

Spring: @ComponentScan注解,不设置basePackages时,为什么会扫描该注解所在的包?

ComponentScanAnnotationParser类的parse方法: 可以看到如果没配置basePackages,会调用ClassUtils的静态方法getPackageName将声明ComponentScan的类所在的包添加到basePackages中去...

DiffusionDet:第一个用于物体检测的扩散模型(DiffusionDet: Diffusion Model for Object Detection)

提出了一种新的框架——DiffusionDet,它将目标检测定义为一个从有噪声的盒子到目标盒子的去噪扩散过程。在训练阶段,目标盒从真实值盒扩散到随机分布,模型学会了逆转这个噪声过程。 在推理中,该模型以渐进的方式将一组随机生成的框…...

④. GPT错误:导入import pandas as pd库,存储输入路径图片信息存储错误

꧂ 问题最初꧁ 用 import pandas as pd 可是你没有打印各种信息input输入图片路径 print图片尺寸 大小 长宽高 有颜色占比>0.001的按照大小排序将打印信息存储excel表格文件名 表格路径 图片大小 尺寸 颜色类型 占比信息input输入的是文件就处理文件 是文件夹&#x1f4c…...

和鲸 ModelWhale 与华为 OceanStor 2910 计算型存储完成兼容性测试

数智化时代,数据总量的爆炸性增长伴随着人工智能、云计算等技术的发展,加速催化了公众对于数据存储与应用的多元化需求。同时,数据也是重要的基础资源和战略资源,需要严格保障其安全性、完整性。搭建国产数据基础设施底座&#xf…...

c++中单例模式的实现和问题

单例模式定义 单例模式是一种创建型设计模式,它确保一个类只有一个实例,并提供了一个全局访问点来访问该实例。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对…...

如何选购高效便捷的软件行业项目管理系统

如何选择一个高效便捷的软件行业项目管理系统?推荐一款好用的项目管理软件Zoho Projects,Zoho Projects是少数可以给客户开通权限的项目管理软件,相信Zoho Projects权限管理功能会受到题主的欢迎。有了这个功能,项目外的客户可以参…...

用“和美”丈量中国丨走进酒博物馆系列⑨

五粮液酒文化博览馆始建于1988年,是中国酒业最早的酒文化博览馆,于2020年启动升级改造。 现在我们看到的五粮液酒文化博览馆,采用了当今博览馆最前沿的展陈方式,展陈设计与空间布局更具灵动性和多元性,蕴含传统文化氛围…...

树莓派 Raspberry Pi 与YOLOv8 结合进行目标检测

文章大纲 使用树莓派摄像头 提供视频流前置文章libcamera树莓派安装与部署YOLOv8硬件需求 PrerequisitesYOLO Version: YOLOv5 or YOLOv8硬件的选择,树莓派5的YOLOv8支持呼之欲出,Hardware Specifics: At a GlanceYOLOv8 在树莓派上的配置与安装Install Necessary PackagesIn…...

centos 安装 percona-xtrabackup

一、yum安装 1.安装Percona yum存储库 yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm 2.启用Percona Server 8.0存储库 percona-release setup ps57 3.输出如下则安装成功 [rootlocalhost ~]# percona-release setup ps80 * Disabling all…...

机器学习1:k 近邻算法

k近邻算法(k-Nearest Neighbors, k-NN)是一种常用的分类和回归算法。它基于一个简单的假设:如果一个样本的k个最近邻居中大多数属于某一类别,那么该样本也很可能属于这个类别。 k近邻算法的步骤如下: 输入&#xff1a…...

知识图谱系列4:neo4j学习

这是一篇还不错的教程,我将会针对其中的Cypher语法在这篇帖子内提出问题,以便学习与复习。 MATCH是什么操作? 小括号()代表什么?(n)代表什么? MATCH (n) DETACH DELETE n是什么含义&#xff1…...

Mainflux IoT:Go语言轻量级开源物联网平台,支持HTTP、MQTT、WebSocket、CoAP协议

Mainflux是一个由法国的创业公司开发并维护的安全、可扩展的开源物联网平台,使用 Go语言开发、采用微服务的框架。Mainflux支持多种接入设备,包括设备、用户、APP;支持多种协议,包括HTTP、MQTT、WebSocket、CoAP,并支持…...

docker详细操作--未完待续

docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...

Rust 异步编程

Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...

深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏

一、引言 在深度学习中,我们训练出的神经网络往往非常庞大(比如像 ResNet、YOLOv8、Vision Transformer),虽然精度很高,但“太重”了,运行起来很慢,占用内存大,不适合部署到手机、摄…...

WEB3全栈开发——面试专业技能点P7前端与链上集成

一、Next.js技术栈 ✅ 概念介绍 Next.js 是一个基于 React 的 服务端渲染(SSR)与静态网站生成(SSG) 框架,由 Vercel 开发。它简化了构建生产级 React 应用的过程,并内置了很多特性: ✅ 文件系…...

游戏开发中常见的战斗数值英文缩写对照表

游戏开发中常见的战斗数值英文缩写对照表 基础属性(Basic Attributes) 缩写英文全称中文释义常见使用场景HPHit Points / Health Points生命值角色生存状态MPMana Points / Magic Points魔法值技能释放资源SPStamina Points体力值动作消耗资源APAction…...

高抗扰度汽车光耦合器的特性

晶台光电推出的125℃光耦合器系列产品(包括KL357NU、KL3H7U和KL817U),专为高温环境下的汽车应用设计,具备以下核心优势和技术特点: 一、技术特性分析 高温稳定性 采用先进的LED技术和优化的IC设计,确保在…...

Yii2项目自动向GitLab上报Bug

Yii2 项目自动上报Bug 原理 yii2在程序报错时, 会执行指定action, 通过重写ErrorAction, 实现Bug自动提交至GitLab的issue 步骤 配置SiteController中的actions方法 public function actions(){return [error > [class > app\helpers\web\ErrorAction,],];}重写Error…...

信息收集:从图像元数据(隐藏信息收集)到用户身份的揭秘 --- 7000

目录 🌐 访问Web服务 💻 分析源代码 ⬇️ 下载图片并保留元数据 🔍 提取元数据(重点) 👤 生成用户名列表 🛠️ 技术原理 图片元数据(EXIF 数据) Username-Anarch…...