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

本文主要是介绍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) # 输出:你好

以上内容仅供学习使用~

这篇关于spider小案例~https://industry.cfi.cn/BCA0A4127A4128A4141.html的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/482113

相关文章

springboot项目如何开启https服务

《springboot项目如何开启https服务》:本文主要介绍springboot项目如何开启https服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录springboot项目开启https服务1. 生成SSL证书密钥库使用keytool生成自签名证书将

HTML5中的Microdata与历史记录管理详解

《HTML5中的Microdata与历史记录管理详解》Microdata作为HTML5新增的一个特性,它允许开发者在HTML文档中添加更多的语义信息,以便于搜索引擎和浏览器更好地理解页面内容,本文将探... 目录html5中的Mijscrodata与历史记录管理背景简介html5中的Microdata使用M

html5的响应式布局的方法示例详解

《html5的响应式布局的方法示例详解》:本文主要介绍了HTML5中使用媒体查询和Flexbox进行响应式布局的方法,简要介绍了CSSGrid布局的基础知识和如何实现自动换行的网格布局,详细内容请阅读本文,希望能对你有所帮助... 一 使用媒体查询响应式布局        使用的参数@media这是常用的

HTML5表格语法格式详解

《HTML5表格语法格式详解》在HTML语法中,表格主要通过table、tr和td3个标签构成,本文通过实例代码讲解HTML5表格语法格式,感兴趣的朋友一起看看吧... 目录一、表格1.表格语法格式2.表格属性 3.例子二、不规则表格1.跨行2.跨列3.例子一、表格在html语法中,表格主要通过< tab

Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案

《Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案》:本文主要介绍Vue3组件中getCurrentInstance()获取App实例,但是返回nu... 目录vue3组件中getCurrentInstajavascriptnce()获取App实例,但是返回n

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的

前端CSS Grid 布局示例详解

《前端CSSGrid布局示例详解》CSSGrid是一种二维布局系统,可以同时控制行和列,相比Flex(一维布局),更适合用在整体页面布局或复杂模块结构中,:本文主要介绍前端CSSGri... 目录css Grid 布局详解(通俗易懂版)一、概述二、基础概念三、创建 Grid 容器四、定义网格行和列五、设置行

前端下载文件时如何后端返回的文件流一些常见方法

《前端下载文件时如何后端返回的文件流一些常见方法》:本文主要介绍前端下载文件时如何后端返回的文件流一些常见方法,包括使用Blob和URL.createObjectURL创建下载链接,以及处理带有C... 目录1. 使用 Blob 和 URL.createObjectURL 创建下载链接例子:使用 Blob

Vuex Actions多参数传递的解决方案

《VuexActions多参数传递的解决方案》在Vuex中,actions的设计默认只支持单个参数传递,这有时会限制我们的使用场景,下面我将详细介绍几种处理多参数传递的解决方案,从基础到高级,... 目录一、对象封装法(推荐)二、参数解构法三、柯里化函数法四、Payload 工厂函数五、TypeScript

Python中使用正则表达式精准匹配IP地址的案例

《Python中使用正则表达式精准匹配IP地址的案例》Python的正则表达式(re模块)是完成这个任务的利器,但你知道怎么写才能准确匹配各种合法的IP地址吗,今天我们就来详细探讨这个问题,感兴趣的朋... 目录为什么需要IP正则表达式?IP地址的基本结构基础正则表达式写法精确匹配0-255的数字验证IP地