【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

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

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

相关文章

JavaScript反爬虫技巧详细攻略

在互联网时代,网站采取了各种手段来防止被爬虫抓取数据,其中最常见的就是JavaScript反爬虫技巧。本文将揭示一些常用的JavaScript反爬虫技巧,并提供一些实际操作建议,帮助您保护自己的爬虫免受检测和封禁。 1、为什么网站使用Java…

【NeRF】1、NeRF 是什么

NeRF 最早是在 ECCV2020 中提出的方法,还获得了 ECCV2020 Oral 论文:Representing Scenes as Neural Radiance Fields for View Synthesis代码:https://github.com/bmild/nerf官网:https://www.matthewtancik.com/nerf Neural R…

集成内部高端电源开关LTC3637HMSE、LTC3637MPMSE稳压器,TJA1443AT汽车CAN FD收发器。

一、LTC3637 76V、1A 降压型稳压器 (简介)LTC3637是一款高效率降压DC/DC稳压器,集成内部高端电源开关,功耗仅12μA DC,空载时可保持稳定的输出电压。LTC3637可提供高达1A的负载电流,并具有可编程峰值电流限…

API攻防-接口安全SOAPOpenAPIRESTful分类特征导入项目联动检测

文章目录 概述什么是接口? 1、API分类特征SOAP - WSDLWeb services 三种基本元素: OpenApi - Swagger UISpringboot Actuator 2、API检测流程Method:请求方法URL:唯一资源定位符Params:请求参数Authorization&#xff…

【算法系列 | 10】深入解析查找算法之—线性查找

序言 心若有阳光,你便会看见这个世界有那么多美好值得期待和向往。 决定开一个算法专栏,希望能帮助大家很好的了解算法。主要深入解析每个算法,从概念到示例。 我们一起努力,成为更好的自己! 今天第10讲,讲…

eclipse 某个文件不能编辑

今天打开eclipse 突然发现有一个文件不能编辑,左下角发现此文件被修改为只读, 右键此文件-->properties--> Resource -->在Attributes中,取消Read-only选项--> Apply 此时,发现eclipse 右下角 变为Writable。再次编辑…

spark中使用flatmap报错:TypeError: ‘int‘ object is not subscriptable

1、背景描述 菜鸟笔者在运行下面代码时发生了报错: from pyspark import SparkContextsc SparkContext("local", "apple1012")rdd sc.parallelize([[1, 2], 3, [7, 5, 6]])rdd1 rdd.flatMap(lambda x: x) print(rdd1.collect())报错描述如…

机器学习必修课 - 交叉验证 Cross-Validation

想象一下你有一个包含5000行数据的数据集。通常情况下,你会将约20%的数据保留作为验证数据集,即1000行。但这会在确定模型得分时引入一些随机性。也就是说,一个模型可能在一组1000行数据上表现良好,即使在另一组1000行数据上表现不…

Self-Instruct

本篇工作利用LLM的生成能力,来产生大量指令数据集(指令、输入、输出),无需人工标注数据。 其中,在对任务判别的时候,需要区分是输出优先还是输入优先: 输入优先没问题,符合人类直觉…

【小米技术分享】面试题:什么是乐观锁?你是如何设计一个乐观锁

大家好,我是小米。今天我们来聊一下面试中常见的一个问题:“什么是乐观锁?你是如何设计一个乐观锁?”作为一位热爱技术的程序员,对于这个问题,我有着自己独特的理解和实践经验。接下来,我将以通…

ESP32-WROOM-32无法进入下载模式进行程序上传的问题

结论 先说结论,ESP32-WROOM-32无法进入下载模式通过串口进行程序上传,可能是GPIO2引脚没有通过下拉电阻拉低,导致无法进入正确的启动模式。 启动模式 ESP32启动时会打印rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) 复位源rs…

discuz封面设置失败的解决办法(centos系统+windows系统)

discuz封面设置失败的解决办法(centos系统windows系统) centos系统:1、开启/var/www/html 这个目录的读写权限chmod -R 777 /var/www/html然后重启httpd:service httpd restart如果discuz论坛发布帖子,还是显示封面设置失败的话…