当前位置: 首页 > 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

http://www.lryc.cn/news/188761.html

相关文章:

  • 智慧安防AI视频智能分析云平台EasyCVR加密机授权小tips
  • C# Windows 窗体控件中的边距和填充
  • 腾讯云2核4G轻量服务器5M带宽支持多少人同时在线?
  • 01 初识FPGA
  • 设备巡检管理系统与隐患排查治理
  • linux之cpu模拟负载程序
  • zookeeper节点数据类型介绍及集群搭建
  • Spring: @ComponentScan注解,不设置basePackages时,为什么会扫描该注解所在的包?
  • DiffusionDet:第一个用于物体检测的扩散模型(DiffusionDet: Diffusion Model for Object Detection)
  • ④. GPT错误:导入import pandas as pd库,存储输入路径图片信息存储错误
  • 和鲸 ModelWhale 与华为 OceanStor 2910 计算型存储完成兼容性测试
  • c++中单例模式的实现和问题
  • 如何选购高效便捷的软件行业项目管理系统
  • 用“和美”丈量中国丨走进酒博物馆系列⑨
  • 树莓派 Raspberry Pi 与YOLOv8 结合进行目标检测
  • centos 安装 percona-xtrabackup
  • 机器学习1:k 近邻算法
  • 知识图谱系列4:neo4j学习
  • Mainflux IoT:Go语言轻量级开源物联网平台,支持HTTP、MQTT、WebSocket、CoAP协议
  • 怎样提取视频中的音频?分享一个一学就会的方法~
  • 【数据结构】二叉树的基本概念
  • 数据可视化实战:如何给毛*易的歌曲做词云展示?
  • 智能文本纠错API的崭露头角:革命性的写作辅助工具
  • 读书笔记:多Transformer的双向编码器表示法(Bert)-3
  • jpsall脚本
  • Django REST framework API版本管理【通过GET参数传递】
  • 归并排序 nO(lgn)
  • 数据库Mysql三大引擎(InnoDB、MyISAM、 Memory)与逻辑架构
  • Python数据分析实战-实现Mann-Whitney U检验(附源码和实现效果)
  • 车载SBC芯片概论