spider小案例~https://industry.cfi.cn/BCA0A4127A4128A4141.html

一、获取列表页信息

        通过抓包发现列表页信息非正常返回,列表信息如下图:

通过观察发现列表页信息是通过unes函数进行处理的,我们接下来去看下该函数

该函数是对列表页的信息先全局替换"~"为"%u",然后再通过unescape函数对替换后的字符串进行解码,到此我们就可以获取到列表页的信息了,我们用Python来还原一下

import re
from urllib.parse import unquoteimport requestsdef get_list_page():headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36",}url = 'https://industry.cfi.cn/BCA0A4127A4128A4141.html'response = requests.get(url, headers=headers)re_data = re.findall('var n.*?="(.*?)";', response.text)for data in re_data:result = data.replace("~", "\\u")list_info = unquote(result).encode('utf8').decode('unicode_escape')# 详情页urldetail_url = "https://industry.cfi.cn/"+''.join(re.findall(r'onclick=\"window.open\(\'(.*?)\'\);\"',list_info,re.S))print(detail_url)# 标题title_info = re.sub(r'[<font color=FireBrick><b></b>/</font></u><br>]','',list_info.split(');"')[-1]).strip()print(title_info)

二、获取详情页信息

        有了详情页的URL,我们接下来再来看详情页的获取

    抓包可见详情信息如上图,处理详情内容的函数应为 -->ifrnews,接下来我们去找该函数的位置,卡看该函数做了什么处理,如下图

箭头所指为我们想要的结果,与列表页类似,我们用Python还原下详情页的获取

def get_detail_page():headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36",}url = 'https://industry.cfi.cn/p20231209000312.html'response = requests.get(url, headers=headers)# 从响应中取出详情内容content = ''.join(re.findall(r"var nr\d+=\"(.*?)\";", response.text, re.S))# 对详情内容进行解码detail_page_html = unquote(content).replace('~', "\\u").encode('utf8').decode('unicode_escape')print(detail_page_html)

总结:

        在 JavaScript 中,使用 “%u” 进行 Unicode 编码。而在 Python 中,可以使用 “\u” 进行 Unicode 编码。

        以下是示例:

        在 JavaScript 中,使用 “%u” 进行 Unicode 编码:

var str = "%u4F60%u597D";
var decodedStr = unescape(str);
console.log(decodedStr); // 输出:你好

      在 Python 中,使用 “\u” 进行 Unicode 编码:

      请注意,在 Python 中使用 Unicode 编码时需要对反斜杠进行转义,因此在字符串中需要使用双反斜杠 “\” 表示单个反斜杠。

str = "\\u4F60\\u597D"
decoded_str = bytes(str, "utf-8").decode("unicode_escape")
print(decoded_str) # 输出:你好

以上内容仅供学习使用~

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

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

相关文章

快速碰撞刚性环境的机器人低阻抗控制(阻尼影响分析)

问题描述 在快速碰撞刚性环境的机器人低阻抗控制中&#xff0c;需要通过精确的碰撞检测和处理&#xff0c;以及低阻抗控制策略的优化&#xff0c;来减少碰撞对机器人和环境的影响。同时&#xff0c;我们还需要适应刚性环境&#xff0c;提高机器人的稳定性和鲁棒性&#xff0c;…

MySQL数据库,视图、存储过程与存储函数

数据库对象&#xff1a; 常见的数据库对象&#xff1a; 视图&#xff1a; 视图是一种虚拟表&#xff0c;本身是不具有数据的占用很少的内存空间。 视图建立在已有表的基础上&#xff0c;视图赖以建立的这些表称为基表。 视图的创建和删除只影响视图本身&#xff0c;不影响对…

打造绿色计算数智动力 HashData 入选“绿色计算最具价值解决方案”

12月13日-14日&#xff0c;由绿色计算产业联盟(GCC)、边缘计算产业联盟&#xff08;ECC&#xff09;联合举办“2023计算产业生态大会”&#xff08;CIEC 2023&#xff09;在北京举行。作为计算领域的权威会议&#xff0c;本次大会邀请了多位两院院士、众多产业专家&#xff0c;…

单元测试二(实验)-云计算2023.12-云南农业大学

1、实践系列课《深入浅出Docker应用》 https://developeraliyun.com/adc/scenarioSeries/713c370e605e4f1fa7be903b80a53556?spma2c6h.27088027.devcloud-scenarioSeriesList.13.5bb75b8aZHOM2w 容器镜像的制作实验要求 创建Dockerfile文件: FROM ubuntu:latest WORKDIR data…

调用Win10隐藏的语音包

起因 在做一个文本转语音的Demo的时候&#xff0c;遇到了语音包无法正确被Unity识别的问题。明明电脑上安装了语音包但是代码就是识别不出来 原因 具体也不是非常清楚&#xff0c;但是如果语言包是在的话&#xff0c;大概率是Win10系统隐藏了。 确定语言包 首先查看%windi…

2024年天津仁爱学院高职升本科专业考试报考须知

2024年天津仁爱学院高职升本科专业考试报考须知 一、报名条件 1.报考天津仁爱学院2024年高职升本科各专业的考生&#xff0c;应符合天津市教育招生考试院制定的2024年天津市高职升本科及天津仁爱学院专业考试有关报考条件&#xff0c;须完成2024年天津市高职升本科文化考…

k8s部署nacos

先决条件: 这里的存储使用的是storageClass,所以要预先将storageClass(nfs)部署完成详情参见: k8s-StoargClass的使用-基于nfs-CSDN博客 因为nacos数据存储依赖于mysql.所以要预先部署MySQL,然后再部署nacos 部署mysql使用的pvc [rootmaster /devops/nacos/mysql]$cat mysql…

jmeter判断’响应断言‘两个变量对象是否相等

1、首先需要设置变量&#xff0c;json、正则、csv文件等变量 2、然后在响应断言中 ①JMeter Variable Name to use —— 输入一个变量&#xff0c;变量名即可 ② 模式匹配规则 ——相等 ③测试模式 ——输入引用的变量命${变量名} &#xff08;注意这里是需要添加一个测试模式…

【CANoe】CANoe中使用RS232

文章目录 1、CANoe中自带示例2、示例讲解2.1CANoe自带Port A和Port B通讯2.2CANoe自带Port A和串口助手通讯 1、CANoe中自带示例 我使用的事CANoe12&#xff0c;RS232路径如下&#xff1a; C:\Users\Public\Documents\Vector\CANoe\Sample Configurations 12.0.75\IO_HIL\RS23…

shiro入门demo(一)身份验证

shiro&#xff08;身份&#xff09;认证&#xff0c;简单来说就是登录/退出。搭建springboot项目&#xff0c;引入shiro和单元测试依赖&#xff1a; <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-…

读书笔记-《数据结构与算法》-摘要6[快速排序]

快速排序 核心&#xff1a;快排是一种采用分治思想的排序算法&#xff0c;大致分为三个步骤。 定基准——首先随机选择一个元素最为基准划分区——所有比基准小的元素置于基准左侧&#xff0c;比基准大的元素置于右侧递归调用——递归地调用此切分过程 快排的实现与『归并排…

Axure的安装及界面基本功能介绍

目录 一. Axure概述 二. Axure安装 2.1 安装包下载 2.2 安装步骤 三. Axure功能介绍​ 3.1 工具栏介绍 3.1.1 复制&#xff0c;剪切及粘贴 3.1.2 选择模式和连接 3.1.3 插入形状 3.1.4 点&#xff08;编辑控点&#xff09; 3.1.5 置顶和置底 3.1.6 组合和取消组合 …

【LeetCode刷题笔记(5)】【Python】【盛最多水的容器】【中等】

文章目录 盛最多水的容器算法题描述示例示例 1示例 2 提示题意拆解解决方案&#xff1a;【双指针】运行结果复杂度分析 结束语 盛最多水的容器 盛最多水的容器 算法题描述 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i…

【排序算法】希尔排序

一&#xff1a;基本介绍 插入排序介绍 1.1 插入排序存在问题 我们看简单的插入排序可能存在的问题 数组 arr {2,3,4,5,6,1} 这时需要插入的数 1(最小), 这样的过程是&#xff1a; {2,3,4,5,6,6}{2,3,4,5,5,6}{2,3,4,4,5,6}{2,3,3,4,5,6}{2,2,3,4,5,6}{1,2,3,4,5,6} 结论:…

AI猫图片展示

AI猫展示 文章目录 AI猫展示

【sgAutocomplete】自定义组件:基于elementUI的el-autocomplete组件开发的自动补全下拉框组件(带输入建议的自动补全输入框)

特性&#xff1a; 1、支持本地保存选中过的记录 2、支持动态接口获取匹配下拉框内容 3、可以指定对应的显示label和字段组件key 4、自动生成速记符字段&#xff08;包含声母和全拼两种类型&#xff09;&#xff0c;增强搜索匹配效率 sgAutocomplete源码 <template><!…

计算机网络:物理层(奈氏准则和香农定理,含例题)

带你速通计算机网络期末 文章目录 一、码元和带宽 1、什么是码元 2、数字通信系统数据传输速率的两种表示方法 2.1、码元传输速率 2.2、信息传输速率 3、例题 3.1、例题1 3.2、例题2 4、带宽 二、奈氏准则&#xff08;奈奎斯特定理&#xff09; 1、奈氏准则简介 2、…

《深入理解 Android ART 虚拟机》笔记

Dex文件格式、指令码 一个Class文件对应一个Java源码文件&#xff0c;而一个Dex文件可对应多个Java源码文件。开发者开发一个Java模块&#xff08;不管是Jar包还是Apk&#xff09;时&#xff1a; 在PC平台上&#xff0c;该模块包含的每一个Java源码文件都会对应生成一个同文件…

Flink Window中典型的增量聚合函数(ReduceFunction / AggregateFunction)

一、什么是增量聚合函数 在Flink Window中定义了窗口分配器&#xff0c;我们只是知道了数据属于哪个窗口&#xff0c;可以将数据收集起来了&#xff1b;至于收集起来到底要做什么&#xff0c;其实还完全没有头绪&#xff0c;这也就是窗口函数所需要做的事情。所以在窗口分配器…

计算机组成原理-ATT格式vsIntel格式

文章目录 AT&T格式 vs lntel格式 x86汇编语言是lntel格式&#xff0c;还有一种汇编语言格式是AT&T AT&T格式 vs lntel格式 lntel格式中取主存地址内容未指明长度默认为32位&#xff0c;对应下图中第四行右边的指令 百分号 美元符号 小括号 可用于计算机结构体数组…