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

拦截抓浏览器数据DrissionPage的演示

有时候一些网站进行了加密,显示的内容还用JS搞活字乱刷术,但是可以通过抓包抓到XHR中的JSON数据,而drissionpage(下文简称DP)相较于selenium可以更方便地抓这种数据;
本文内容仅用于学习交流,不得用于商用,侵权告删;
image
可以看到唯独工资这块,被JS动了,由于参数很多,逆向难度比较大,我们直接找这个数据,可知每次返回15条数据
joblist.json是左边的简略信息,而需要点击具体岗位,才会返回右边的detail.json具体信息,其实详细信息对我们而言,主要是多了①岗位内容介绍,一般是较长的一段文本;②HR的状态,是在线还是几个月不在线;③公司简介其实也有返回,但不会显示出来;
再具体内容的步骤不做详细解释,随手写的没有做过多封装,主要功能已实现,由于DP可以为每个端口存储不同的登录信息,所以只要扫过一次码,之后就不需要再登录,并且调试的时候已打开的网页不会重复打开,可以继续下一步,灰常方便,代码中不明白的需看自行学习爬虫知识和DP官网教程和说明:


每次的15条简略信息:
image


岗位具体信息:
image

1.1准备工作

from DrissionPage import Chromium,ChromiumOptions
from DrissionPage.common import Keys
import json
import pandas as pd
web_path = r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
test_url = 'https://www.zhipin.com/'
co = ChromiumOptions().set_browser_path(web_path) #临时使用
browser  = Chromium(co)
# --------------------
tab = browser.latest_tab
tab.get(test_url)

1.2定位岗位和城市

def get_start(tab,key_word='爬虫',city_short='FGHJ',city='佛山'):"""ABCDE,FGHJ,KLMN,PQRST,WXYZ"""# 输入搜索的职位search_input = tab.ele('xpath:.//input[@placeholder="搜索职位、公司"]')tab.actions.click(search_input)search_input.clear()tab.actions.click(search_input).type(key_word)# 按下搜索按钮
#     search_confirm = tab.ele('xpath:.//*[@class="search-btn"]') # 登录页切换搜索定位search_confirm = tab.ele('xpath:.//button[@class="btn btn-search"]') #跳转页定位search_confirm.click()tab.wait(2)# 切换城市city_switch = tab.ele('xpath:.//div[@class="city-label active"]')city_switch.click()tab.wait(1)# 选择缩写,使用DP方法定位元素city_list = tab.ele(city_short) # tab.ele('xpath:.//ul[@class="city-char-list"]//li[text()="FGHJ"]') city_list.click()tab.wait(1)# 选择指定的城市city_target = tab.ele(f'xpath:.//ul[@class="city-list-select"]//*[text()="{city}"]')city_target.click()tab.wait(1)
# 调用
get_start(tab,key_word='爬虫',city_short='FGHJ',city='广州')

  此时你要做出选择,是抓简略信息,抓15个就下滑一次,继续抓,有个参数hasmore,代表着还有没有继续的内容;
或者是挨个点击,获取详细信息,由于第一个岗位的详细信息是默认要给的,所以我们必须刷新一次网页,不然会漏一个;
这里都有,需注意第2次返回的岗位简略信息,即第30个岗位,跟着一个调查反馈,所以定位元素要定深一层,不然分分钟陷入死循环给你看

1.3选择抓详细信息

def parse_detail(data):"""根据detail.json抓详细信息的方法"""data_body = data['zpData']['jobInfo']href_part = data_body['encryptId']# 拼出完整链接,不含其他加密参数full_href = "https://www.zhipin.com/job_detail/" + href_part + ".html"jobname = data_body['jobName']location = data_body['locationName']experience = data_body['experienceName']degree = data_body['degreeName']salary = data_body['salaryDesc']desc = data_body['postDescription']address = data_body['address']skills = data_body['showSkills']hr_name = data['zpData']['bossInfo']['name']hr_title = data['zpData']['bossInfo']['title']hr_active = data['zpData']['bossInfo']['activeTimeDesc']company = data['zpData']['bossInfo']['brandName']comp_scale = data['zpData']['brandComInfo']['scaleName']industry = data['zpData']['brandComInfo']['industryName']comp_intro = data['zpData']['brandComInfo']['introduce']welfare = data['zpData']['brandComInfo']['labels']result_dict = {'jobname': jobname,'company': company,'comp_scale': comp_scale,'salary': salary,'hr_active': hr_active,'industry': industry,'skills': skills,'experience': experience,'hr_name': hr_name,'hr_title': hr_title,'degree': degree,'location': location,'address': address,'desc': desc,'comp_intro': comp_intro,'welfare': welfare,}return result_dict

接上这个循环就行,网站也有频率检测,干太多太猛出问题,概不负责;

tab.listen.start('zpgeek/job/detail.json') #开始监听
tab.refresh() # 刷新页面
my_columns = ['jobname', 'company', 'comp_scale', 'salary', 'hr_active', 'industry', 'skills', 'experience', 'hr_name', 'hr_title', 'degree', 'location', 'address', 'desc', 'comp_intro', 'welfare']
old_df = pd.DataFrame(columns=my_columns)
# 首先创建一个空的EXCEL,含表头,用于追加
custom_path= "d:/new_detail2.csv"
old_df.to_csv(custom_path,index=False,header=True,encoding='utf_8_sig')finished = 0
while True:# 新的用来存放一次搞到的15个数据new_df = pd.DataFrame(columns=my_columns)jobs = tab.eles('xpath:.//div[contains(@class,"card-area")]/div[contains(@class,"job-card-wrap")]')length_jobs = len(jobs)for i in jobs[finished:]:i.click()    data = tab.listen.wait().response.bodyres = parse_detail(data)new_df.loc[len(new_df)] = restab.wait(3,scope=5)new_df.to_csv(custom_path,mode='a', encoding='utf_8_sig', index=False,header=False)finished =length_jobs# 重新获取最新数量new_jobs = tab.eles('xpath:.//div[contains(@class,"card-area")]')new_length = len(new_jobs)if new_length>length_jobs:print('继续干')if new_length==length_jobs:print('无新数据,退出')break if finished >=30:print('干太猛,休息会')break

1.4获取简略信息

def parse_json(data,custom_path = 'd:/zhipin.csv'):"""这方法会重复写入表头,照着上面的自己改一下啦"""data_body = data['zpData']['jobList']df = pd.DataFrame(columns=['jobname','company','salary','industry','scale','jobdegree','fullurl','joblabels','skills','bossname','bosstitle','cityname','area','district','welfare'])df.loc[0] = ['jobname','company','salary','industry','scale','jobdegree','fullurl','joblabels','skills','bossname','bosstitle','cityname','area','district','welfare']for i in data_body:joburl = i['encryptJobId']fullurl = 'https://www.zhipin.com/job_detail/'+joburl+'.html'bossname = i['bossName']bosstitle = i['bossTitle']jobname = i['jobName']salary = i['salaryDesc']joblabels = i['jobLabels']skills = i['skills']jobdegree = i['jobDegree']cityname = i['cityName']area = i['areaDistrict']district =i['businessDistrict']company = i['brandName']industry = i['brandIndustry']scale = i['brandScaleName']welfare = i['welfareList']print(jobname,company,salary,industry,scale,jobdegree,fullurl,joblabels,skills,bossname,bosstitle,cityname,area,district,welfare,'\n')df.loc[len(df)] = [jobname,company,salary,industry,scale,jobdegree,fullurl,joblabels,skills,bossname,bosstitle,cityname,area,district,welfare]df.to_csv(custom_path,mode='a', encoding='utf_8_sig', index=False,header=False) 
# parse_json(data_json)

接上这个死循环

tab.listen.start('search/joblist.json') #开始监听
tab.refresh() # 刷新页面
num_count=0
while True:tab.scroll.to_bottom() # 向下滑tab.wait(5,scope=10) # 等待5-10秒packet = tab.listen.wait()data_listen = packet.response.bodyhasmore = data_listen['zpData']['hasMore'] # 判断是否有下一页parse_json(data_listen,custom_path='d:/zhipin_gz.csv')num_count+=1if not hasmore:breakif num_count>=3:break

经研究,网上已经有人写过DP抓这个网站的文章,本文所写内容仅用于学习交流,不得对别人网站进行过多或过快的爬取。

相关文章:

拦截抓浏览器数据DrissionPage的演示

有时候一些网站进行了加密,显示的内容还用JS搞活字乱刷术,但是可以通过抓包抓到XHR中的JSON数据,而drissionpage(下文简称DP)相较于selenium可以更方便地抓这种数据; 本文内容仅用于学习交流,不得用于商用,侵权告删;可以看到唯独工资这块,被JS动了,由于参数很多,逆向…...

登录认证-下篇:基于 Redis 实现共享session登录

将验证码 (session.setAttribute("code", code));用户信息 (session.setAttribute("user", userDTO))改为存入redis中 将随机生成的token作为登录凭证,放在请求头中的authorization字段 并设置两层拦截器,解决状态登录刷新的问题业务流程图1业务流程图2…...

用 Go + Tesseract 实现英文数字验证码识别

一、为什么选 Go 二进制部署方便、启动速度快,适合在服务器或微服务中部署 OCR 接口。 gosseract 是成熟的 Go 对 Tesseract 的封装,调用简单。 可与 Go 的并发模型天然结合,便于批量或并发识别。 二、环境准备安装 Go(1.18+ 推荐) 更多内容访问ttocr.com或联系1436423940…...

基于MATLAB的CNN大气散射传播率计算与图像去雾实现

1. 核心流程设计 通过CNN直接学习大气散射模型中的传播率(透射率 t(x)),结合物理模型实现端到端去雾,流程如下: % 整体流程框架 input_img = imread(hazy_image.jpg); % 输入雾图 preprocessed_img = preprocess(input_img); % 预处理 [t_pred, A_pred] = cnn_model(prepr…...

.net连接MYSQL数据库字符串参数详细解析(总结)

通常数据库连接字符串为:Database=dbname;Data Source=192.168.1.1;Port=3306;User Id=root;Password=****;Charset=utf8;TreatTinyAsBoolean=false;其中常用的参数如下:Server,host, data source, datasource, address, addr, network address: 数据库位置(以上任何关键字均…...

Kubernetes 数据存储

在前面已经提到,容器的生命周期可能很短,会被频繁地创建和销毁。那么容器在销毁时,保存在容器中的数据也会被清除。这种结果对用户来说,在某些情况下是不乐意看到的。为了持久化保存容器的数据,kubernetes引入了Volume的概念。 Volume是Pod中能够被多个容器访问的共享目录…...

软件工程第一次作业

| 这个作业属于哪个课程 | <班级的链接> | | ----------------- |--------------- | | 这个作业要求在哪里|https://edu.cnblogs.com/campus/gdgy/Class12Grade23ComputerScience/homework/13469 | | 这个作业的目标 | 自我介绍、预习教材、总结自己想要在这门课程中获得…...

软件工程第一次作业:自我介绍+软工五问

这个作业属于哪个课程 计科23级12班这个作业要求在哪里 作业要求这个作业的目标 通过编写自己的博客来进行自我介绍,以此来熟悉博客园,github1.自我介绍 我是广东工业大学23级计算机科学与技术1班的廖永祺,爱好打游戏,运动。 2.问题 1.这个课程的最终目标是让学生学会什么 …...

软件著作权市场与加密货币趋势

尽管市场对美联储9月降息存在分歧,但Coinbase最新月度展望报告指出,这并不意味着加密货币市场已触及局部顶点。数据显示,当前货币市场基金中超过7万亿美元的散户资金仍处于观望状态,美联储宽松政策可能在未来几个月释放更多市场参与潜力。这一判断与软件著作权领域呈现的扩…...

The 3rd Universal Cup. Stage 37: Wuhan

Preface 这场打的时候出现了各种突发情况,比如中途和教练在机房讨论了若干问题,徐神 J 题写一半临时有事走了之类的 再加上有人犯病了魔改欧拉回路板子导致 E 题完全对的思路最后没过,直接 9 题变 7 题了 我再也不乱改板子了.jpgA. Problem Setting 队友开场写的签 #include…...

炸裂:SpringAI新版发布,终于支持断线重连了!

盼星星盼月亮,Spring AI 新版 1.1.0-M1(1.1.0 里程式版本)终于支持 Steamable HTTP 了,也就意味着 Spring AI 的 MCP 服务终于支持自动断线重连了。 1.SteamableHTTP 定义:Streamable HTTP 是基于标准 HTTP 协议的流式数据传输模式,允许客户端或服务器在数据完全生成前,…...

spring 事务实战:声明式vs 编程式

------------------------------------------------------------------------------------------------------ 在 Spring 中,事务管理有两种核心实现方式:声明式事务和编程式事务。它们各有适用场景,下面通过实战示例对比两者的实现方式和特点。 一、编程式事务(Programmat…...

Mysql 事务提交回滚退回

mysql 验证可以通过事务 START TRANSACTION; 进行提交或者回滚 避免错执行START TRANSACTION; 执行SQL rollbacl 这个sql执行后会回滚 ,下个SQL 执行会正常提交 执行 commit rollback 就已经触发 start transactionSTART TRANSACTION; 执行SQL commit 执行玩数据会正…...

鸿蒙前端开发3-ArkTS语言基本语法

官方文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V2/arkts-basic-syntax-0000001504650057-V2 1.基本语法 装饰器   用于装饰类、结构、方法以及变量,并赋予其特殊的含义。如上述示例中@Entry、@Component和@State都是装饰器,@Component表示自定…...

solo博客容器化运行访问

在实验之前,需要准备一个solo包,linux虚机(centos,ubantu,Euler),数据库 solo博客通过java语言启动,也通过java语言进行运维。当前java版本最高有23,我们采用的是17. dnf -y install java 命令这样执行,java版本只会是11,可以通过java -version查看 dnf install jav…...

Flutter应用架构设计:基于Riverpod的状态管理最佳实践

Flutter应用架构设计:基于Riverpod的状态管理最佳实践本文基于BeeCount(蜜蜂记账)项目的实际开发经验,深入探讨如何使用Riverpod构建可维护、可扩展的Flutter应用架构。项目背景 BeeCount(蜜蜂记账)是一款开源、简洁、无广告的个人记账应用。所有财务数据完全由用户掌控,支持…...

P12502 「ROI 2025 Day1」天狼星的换班 「线段覆盖问题」

题目传送门线段覆盖问题,数据结构优化 DP。题意 是否能从给定的 \(k\) 条线段 \((l,m,r)\) 中按照某种顺序地挑出任意个线段覆盖区间 \([1,n]\),并满足如下条件: 后挑出的线段的 \(m\) 不能落在已挑出的线段上。 \(1 \leq n,k \leq 5 \times 10^5\),\(1 \leq l \leq m \leq…...

动态规划DP问题详解,超全,思路全收集

1. 01背包问题 (01 Knapsack Problem) 问题描述: 有 N 件物品和一个容量为 V 的背包。第 i 件物品的体积是 v[i],价值是 w[i]。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。第一步:dp[i][j] 的定义是: dp[i][j] 表示从前 i 件物品中任意选…...

SQL入门与实战

SQL:用于访问和处理数据库的计算机语言...

day05 课程

day05 课程课程:https://www.bilibili.com/video/BV1o4411M71o?spm_id_from=333.788.videopod.episodes&p=94 5.1 学习字符串的必要性5.2 认识字符串5.3 字符串输出5.4 字符串输入5.5 下标5.6 切片简介5.7 体验切片5.8 字符串常用方法简介5.9 字符串常用操作方法之查找5.…...

【JPCS独立出版Fellow杰青云集】2025年先进材料与航空航天结构力学国际学术会议(AMASM 2025)

会议将聚焦“先进材料”、“结构力学”、“航空航天工程”等前沿领域,旨在为来自国内外高校、科研机构、企事业单位的专家、教授、学者、工程师等搭建一个交流最新研究成果、分享专业经验、拓展学术与产业网络的国际平台。大会将深入探讨本领域面临的关键技术挑战与发展方向,…...

算法-TSP旅行商问题-03 - jack

目录问题的核心要素问题的复杂性常见的解法对于大规模问题:穷举动态规划实现 (Held-Karp) 旅行商问题 (Traveling Salesperson Problem, TSP) 旅行商问题是计算机科学和运筹学领域一个非常经典且著名的组合优化问题, 给定一系列城市和每对城市之间的距离,找到一条最短的哈密…...

AI编程⑤:【Cursor保姆级教程】零基础小白从安装到实战,手把手教你玩转AI编程神器!

一、什么是AI编程? 以前的编程是靠专业技术人员+学习至少一门擅长的编程语言去写程序 现在是通过对话聊天+AI大模型写程序 对话+AI大模型=AI编程 所有的模型对话上下文都有长度限制,这也是目前AI编程一个短板所在 二、Cursor免费和收费的区别,怎么充值?模式特点免费只能使用…...

ArkTS

装饰器: 用于装饰类、结构、方法以及变量,并赋予其特殊的含义。如上述示例中@Entry、@Component和@State都是装饰器,@Component表示自定义组件,@Entry表示该自定义组件为入口组件,@State表示组件中的状态变量,状态变量变化会触发UI刷新。 UI描述:以声明式的方式来描述UI…...

一文读懂基因检测PLM、体外诊断试剂PLM的功能、价值、解决方案

在体外诊断(IVD)与基因检测行业,研发面临 “高合规门槛、高数据复杂度、高协同需求” 三重挑战:合规需满足 ISO 13485、FDA 21 CFR Part 11、NMPA 等多标准,疏漏易致上市延期;基因试剂需记录上百种物料参数,实验数据关联复杂,传统 Excel 管理易出错、难追溯;研发与 SA…...

ai本地部署工具有哪些?新手入门AI推荐这几个

随着ai技术的火热,越来越多新手想尝试在本地部署ai模型,体验ai的魅力。但面对复杂的部署流程,不少人望而却步。其实,选对工具能让部署变得简单。今天就给大家推荐几款适合新手的ai本地部署工具,其中首推DS本地部署大师,还会详细介绍用它部署DeepSeek的操作步骤。 一、几款…...

匿名内部类

...

文件上传、分片上传结合antdProComponents表格展示,点击上传

文件上传、分片上传结合antdProComponents表格展示,点击上传上传组件:// ChunkUpload.jsx import React, { useCallback, forwardRef, useState, useImperativeHandle, useEffect, useRef } from react; import { UploadDropZone } from @rpldy/upload-drop-zone; import {Ch…...

2025 年 PLM 市场新锐崛起:五家厂商以创新技术引领行业变革新路径

在制造业数字化转型的汹涌浪潮中,产品生命周期管理(PLM)领域正历经着前所未有的深刻变革。往昔传统的软件模式逐渐式微,一批将技术创新奉为圭臬的新锐厂商强势登场。它们凭借独具差异化的解决方案,宛如矫健的黑马,在市场中迅速崭露头角,为制造企业精心打造出从研发设计的…...

2025 年国产 PLM 系统发展全景:厂商实力与核心功能深度解读

随着国产 PLM 技术的持续突破,本土厂商在功能适配性、行业针对性和服务响应速度上的优势愈发凸显,为不同规模、不同领域的制造企业提供了更贴合需求的解决方案。本文将聚焦 2025 年国产 PLM 系统主流厂商,全面解析厂商特色与系统核心功能模块,为企业选型提供参考。一、2025…...

开发效率翻倍!编码助手+云效 AI 评审如何破解代码质量与速度难题?

如今随着 AI 技术的突破,这一问题出现了全新解法:使用编码助手(包括不限于通义灵码、Qoder、Cursor、Claude Code 等工具,本文以通义灵码作为示例) + 云效 AI 评审,助力解决传统开发流程中的一些挑战。作者:致信 背景 随着软件开发复杂度的持续攀升和产品迭代周期的不断…...

SSL部署完成,https显示连接不安全如何处理?

在部署 SSL 后,如果浏览器仍然显示 “连接不安全” 或 “Not Secure”,通常是由以下几种原因导致的。针对每种可能的原因和问题,以下提供了详细的排查和解决方案。1. 排查问题的可能原因 1.1 SSL 证书未正确安装 如果 SSL 证书安装不完整或配置错误,浏览器会显示连接不安全…...

各省简称

各省简称目录一、华北地区二、东北地区三、华东地区四、华中地区五、华南地区六、西南地区七、西北地区八、特别行政区记忆小技巧: 一、华北地区省份全称 简称 由来简述北京市 京 直接取自全称中的字。历史上是京城的所在地。天津市 津 直接取自全称中的字。意为“天子的渡口”…...

完整教程:HDFS基准测试与数据治理

完整教程:HDFS基准测试与数据治理pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; f…...

var code = 76cb2b4f-5a26-4a70-a3bf-dc8f2ae5162f

var code = "76cb2b4f-5a26-4a70-a3bf-dc8f2ae5162f"...

解放双手!三端通用的鼠标连点神器

前言在日常工作和游戏中,我们经常遇到需要大量重复点击的情况——无论是抢购、快速通过游戏关卡,还是处理繁琐的数据录入工作。手动重复点击不仅枯燥乏味,还容易导致手腕疲劳。今天给大家分享一款轻巧易用的鼠标连点器工具,支持多种点击模式,彻底解放你的双手!为什么推荐…...

用 C# 与 Tesseract 实现验证码识别系统

一、项目概述 验证码识别在自动化测试、爬虫开发与用户辅助系统中具有重要价值。本文将介绍如何使用 C# 调用 Tesseract OCR 实现验证码图像识别功能,并对验证码图像进行简单预处理,以提高识别准确率。 二、开发环境准备安装 Tesseract 更多内容访问ttocr.com或联系143642394…...

【9月19日最终截稿,SPIE出版】2025年信息工程、智能信息技术与人工智能国际学术会议(IEITAI 2025)

2025年信息工程、智能信息技术与人工智能国际学术会议(IEITAI 2025)将于2025年9月26-28日在黑龙江哈尔滨盛大召开。旨在为全球学者、工程师及行业专家提供一个高水平交流平台,围绕信息工程、人工智能、大数据、物联网、5G/6G通信等前沿领域展开研讨,分享最新研究成果与技术…...

Dockerfile:如何用CMD同时启动两个进程

场景 在一个Dockerfile中,如何编写CMD指令,使得可以同时启动两个进程? 方案 这两个进程假设分别为Springboot Jar工程、sh脚本:app.jar script.sh需要明确一点:CMD指令本身只能直接执行一个命令 所以我们只能通过间接方式来做到启动多个进程:使用启动脚本start.sh,在其中…...

启动GA-Event Activated,结束GA-End Ability

在GA中 Event Activated是激活时的行为 在激活结尾时调用End Ability...

202003_MRCTF_千层套娃

ZIP套娃,QR二维码Tags:ZIP套娃,QRCODE 0x00. 题目 附件路径:https://pan.baidu.com/s/1GyH7kitkMYywGC9YJeQLJA?pwd=Zmxh#list/path=/CTF附件 附件名称:202003_MRCTF_千层套娃.zip 0x01. WP 01. 打开压缩文件发现hint信息 发现是zip套娃,需要通过python脚本进行自动化解压H…...

基于MATLAB的粒子群算法优化广义回归神经网络的实现

基于MATLAB的粒子群算法(PSO)优化广义回归神经网络(GRNN)的实现一、算法原理与流程 graph TDA[数据准备] --> B[PSO参数初始化]B --> C[GRNN适应度计算]C --> D[粒子速度更新]D --> E[粒子位置更新]E --> F[全局最优解更新]F --> G[GRNN模型训练]G -->…...

MySql EXPLAIN 详解

1、EXPLAIN介绍 EXPLAIN语句提供MySQL如何执行语句的信息。EXPLAIN返回SELECT语句中使用的每个表的信息并列出一行运行数据。它是按照MySQL在处理语句时读取表的顺序列出并输出到一个表格中。2、查询示例 2.1、【explain + 表名】显示的是这个表的表结构。 2.2、【explain + s…...

Transformer完整实现及注释

主要组件:Multi-Head Self-Attention (多头自注意力) Position Encoding (位置编码) Feed Forward Network (前馈神经网络) Encoder/Decoder Layer (编码器/解码器层) Complete Transformer Model (完整模型) """import torch import torch.nn as nn import to…...

数据策略与模型算法

数据策略与模型算法数据工程师:更多关心「基建」的问题,比如,数据链路如何构建、如何做技术选型、效率稳定性如何保障等等。 算法工程师:更多关心「模型」的问题,比如,具体某个算法是什么原理,如何调参等等。 数据分析师:运用工具解决「端到端」的问题,包括「问题抽象…...

25fall-cs101 作业图床 - Amy

...

在使用代理的时候,可以使用更简单的C++语法代替FGameplayAttribute代理,使用TStaticFuncPtr T

DECLARE_DELEGATE_REVAL(FGameplayAttribute, FAttributeSignature); 比如这里的代理 定义为FAttributeSignature AttributeSignature ;但是可以不生命代理,直接声明 TBaseStaticDelegateInstance<FGameplayAttribute(), FDefaultDelegateUserPolicy>::FFuncPtr它代表…...

从 url 到 PPT 一键生成:Coze 工作流,颠覆你的内容创作方式!

完整内容:从 url 到 PPT 一键生成:Coze 工作流,颠覆你的内容创作方式!你是否曾在面对大量文章资料,却要在短时间内将其精华提炼并制作成演示文稿时,感到焦头烂额、无从下手?一页页翻阅文章,手动摘取要点,再逐一编排进 PPT,整个过程繁琐又耗时,效率低下不说,最终呈现…...

[WPF学习笔记]多语言切换-001

1、VS2019新建项目2、引入Nuget包 3、修改XML代码引入命名空间并设置<Window x:Class="WPFMultiLanguageTest.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/…...

Shell 语法摘要

sed 的使用 sed 的全称是 Stream Editor,即流编辑器。它可以逐行处理输入数据(先将读入的行放到缓冲区中,对缓冲区里的内容进行处理),并将处理结果输出到标准输出。 格式:sed [选项] [address]{脚本命令(块)} 文件名 前缀 address 可以是数字或者文本(正则),格式:[addr…...