使用paddleOCR完成价格提取并实现可视化

该项目通过pyautogui控制鼠标点击金投网各省份页面并截图,利用paddleOCR提取废弃金属价格数据,经pymysql存入MySQL。再以Flask搭建后端,结合百度echart框架实现各省份价格实时动态可视化,解决了网站路径多变导致的爬虫获取数据难题。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

使用paddleocr完成价格提取并实现可视化 - 创想鸟

一、项目介绍

基于文字提取技术paddleOCR实现在金投网上获取各个省份的当日废弃金属价格。区别于爬虫获取网页数据,本项目使用脚本控制鼠标来获取网页截图,用paddleocr技术提取价格数据,在不使用爬虫的技术下也能精准的获取想要的价格数据。

使用paddleOCR完成价格提取并实现可视化 - 创想鸟

本项目还借用百度的echart框架,再加上flask技术,搭建了一个简单的网页,用于对各省份价格数据的实时动态可视化,下面是可视化网页的效果展示。

使用paddleOCR完成价格提取并实现可视化 - 创想鸟

二、详细说明

最近铁的价格波动较大,去网站上搜了一下各省份的价格,发现铁价呈现南高北低,相邻省份价格相近等情况,于是想把这网页上的数据爬取下来并加上一个中国地图实现各省份铁价可视化,研究了金投网后发现由于废弃金属产品较多,数据量过大,该网页采取一个省份设置一个路径的方式存储一个产品的数据,不利于在单个网页获取全部数据,且不同时间其路径也不一样,用爬虫来获取数据难度有点高,于是借鉴了之前写的项目,基于paddleOCR获取数字产品价格,作者编写了脚本控制鼠标点击并截图,后期通过文字提取的方式来获取网页数据。 接下来会分几步来简述项目实现过程。
2.1、脚本 通过pyautogui库控制鼠标点击,由于数据量过大,这里就简单展示前两个省份的代码。(受限于这是一个在线的notebook,无法进行鼠标键盘的交互。所以下面的代码仅供展示作用,不要运行!)

In [ ]

import time  # 加入time函数,可以控制点击时间,等网页完全打开后再截图 import pyautogui as pg  # 用于控制鼠标 from PIL import ImageGrab  # 截取网页 city = ["北京", "上海", "天津", "重庆", "广东", "浙江", "江苏", "江西",         "安徽", "河南", "河北", "山东", "福建", "湖南", "湖北",         "广西", "山西", "陕西", "宁夏", "甘肃", "新疆", "青海", "海南",         "贵州", "云南", "四川", "西藏", "内蒙古", "辽宁", "吉林", "黑龙江"] time.sleep(5)  # 进入界面后等待5秒 pg.click(360, 600)  # 选择第一个城市(北京),360,600为鼠标在屏幕上的坐标点。 pg.click(900, 485)  # 把鼠标移开 time.sleep(2) image = ImageGrab.grab(bbox=(230, 600, 520, 720))  # 截图 image.save(str(0) + ".png")  # 保存图片 print("已保存"+city[0]+"城市铁价") pg.click(600, 485)  # 回到省份界面 time.sleep(2) pg.click(480, 600)  # 选择第2个城市(上海) time.sleep(1) pg.click(900, 485)  # 把鼠标移开 time.sleep(2) image = ImageGrab.grab(bbox=(230, 600, 520, 720))  # 截图 image.save(str(1) + ".png")  # 保存图片 print("已保存"+city[1]+"城市铁价") pg.click(600, 485)  # 回到省份界面 time.sleep(2)
2.2、文字提取 先给大家简单介绍一下paddleOCR,PaddleOCR,一款文本识别效果不输于商用的Python库!支持多语言识别,目前能够支持 80 多种语言;除了能对中文、英语、数字识别之外,还能应对字体倾斜、文本中含有小数点字符等复杂情况;提供有丰富的 OCR ;域相关工具供我们使用,方便我们制作自己的数据集、用于训练
2.2.1、解压数据集(价格截图) 下图为截取的图片

使用paddleOCR完成价格提取并实现可视化 - 创想鸟

In [1]

!unzip -oq /home/aistudio/data/data163670/price_of_scrap_iron.zip -d price
2.2.2、下载paddleocr

In [2]

智谱AI开放平台 智谱AI开放平台

智谱AI大模型开放平台-新一代国产自主通用AI开放平台

智谱AI开放平台 85 查看详情 智谱AI开放平台

!pip install paddleocr
2.2.3、使用paddleocr技术提取价格数据

In [5]

from paddleocr import PaddleOCR money1 = []  # 用于存储ocr提取出来的数据 money_all = []  # 存储全部价格 all_address = ["北京", "上海", "天津", "重庆", "广东", "浙江", "江苏", "江西",                "安徽", "河南", "河北", "山东", "福建", "湖南", "湖北",                "广西", "山西", "陕西", "宁夏", "甘肃", "新疆", "青海", "海南",                "贵州", "云南", "四川", "西藏", "内蒙古", "辽宁", "吉林", "黑龙江"] ocr = PaddleOCR(use_angle_cls=True, lang="ch") for i in range(30):  # 把脚本截图图片通过OCR识别提取价格     img_path = str("price/各省废弃金属-铁-价格/"+str(i) + ".png")  # 设定价格图片路径     result = ocr.ocr(img_path, cls=False, det=True, rec=True)  # ocr读取     for line in result:         #print(line[1][0])  # 输出读取内容         money1.append(line[1][0])  # 存储     money = money1[1+(3*i)]  # 有3个数据,把第二个价格数据提取出来     money_all.append(money)  # 把价格录到总价格中     print("省份:"+all_address[i]+"    价格"+money_all[i])
[2022/08/10 16:10:57] ppocr DEBUG: Namespace(alpha=1.0, benchmark=False, beta=1.0, cls_batch_num=6, cls_image_shape='3, 48, 192', cls_model_dir='/home/aistudio/.paddleocr/whl/cls/ch_ppocr_mobile_v2.0_cls_infer', cls_thresh=0.9, cpu_threads=10, crop_res_save_dir='./output', det=True, det_algorithm='DB', det_db_box_thresh=0.6, det_db_score_mode='fast', det_db_thresh=0.3, det_db_unclip_ratio=1.5, det_east_cover_thresh=0.1, det_east_nms_thresh=0.2, det_east_score_thresh=0.8, det_fce_box_type='poly', det_limit_side_len=960, det_limit_type='max', det_model_dir='/home/aistudio/.paddleocr/whl/det/ch/ch_PP-OCRv3_det_infer', det_pse_box_thresh=0.85, det_pse_box_type='quad', det_pse_min_area=16, det_pse_scale=1, det_pse_thresh=0, det_sast_nms_thresh=0.2, det_sast_polygon=False, det_sast_score_thresh=0.5, draw_img_save_dir='./inference_results', drop_score=0.5, e2e_algorithm='PGNet', e2e_char_dict_path='./ppocr/utils/ic15_dict.txt', e2e_limit_side_len=768, e2e_limit_type='max', e2e_model_dir=None, e2e_pgnet_mode='fast', e2e_pgnet_score_thresh=0.5, e2e_pgnet_valid_set='totaltext', enable_mkldnn=False, fourier_degree=5, gpu_mem=500, help='==SUPPRESS==', image_dir=None, ir_optim=True, label_list=['0', '180'],, layout=True, layout_label_map=None, layout_path_model='lp://PubLayNet/ppyolov2_r50vd_dcn_365e_publaynet/config', max_batch_size=10, max_text_length=25, min_subgraph_size=15, mode='structure', ocr=True, ocr_version='PP-OCRv3', output='./output', precision='fp32', process_id=0, rec=True, rec_algorithm='SVTR_LCNet', rec_batch_num=6, rec_char_dict_path='/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddleocr/ppocr/utils/ppocr_keys_v1.txt', rec_image_shape='3, 48, 320', rec_model_dir='/home/aistudio/.paddleocr/whl/rec/ch/ch_PP-OCRv3_rec_infer', save_crop_res=False, save_log_path='./log_output/', scales=[8, 16, 32], show_log=True, structure_version='PP-STRUCTURE', table=True, table_char_dict_path=None, table_max_len=488, table_model_dir=None, total_process_num=1, type='ocr', use_angle_cls=True, use_dilation=False, use_gpu=False, use_mp=False, use_onnx=False, use_pdserving=False, use_space_char=True, use_tensorrt=False, vis_font_path='./doc/fonts/simfang.ttf', warmup=False) [2022/08/10 16:10:58] ppocr DEBUG: dt_boxes num : 3, elapse : 0.18548965454101562 [2022/08/10 16:11:00] ppocr DEBUG: rec_res num  : 3, elapse : 1.4084184169769287 省份:北京    价格1900.00 [2022/08/10 16:11:00] ppocr DEBUG: dt_boxes num : 3, elapse : 0.28911447525024414 [2022/08/10 16:11:01] ppocr DEBUG: rec_res num  : 3, elapse : 1.4035155773162842 省份:上海    价格2380.00 [2022/08/10 16:11:02] ppocr DEBUG: dt_boxes num : 3, elapse : 0.291318416595459 [2022/08/10 16:11:03] ppocr DEBUG: rec_res num  : 3, elapse : 1.3992137908935547 省份:天津    价格2000.00 [2022/08/10 16:11:03] ppocr DEBUG: dt_boxes num : 3, elapse : 0.20323419570922852 [2022/08/10 16:11:05] ppocr DEBUG: rec_res num  : 3, elapse : 1.3923869132995605 省份:重庆    价格1750.00 [2022/08/10 16:11:05] ppocr DEBUG: dt_boxes num : 3, elapse : 0.20437145233154297 [2022/08/10 16:11:06] ppocr DEBUG: rec_res num  : 3, elapse : 1.499875545501709 省份:广东    价格2240.00 [2022/08/10 16:11:07] ppocr DEBUG: dt_boxes num : 3, elapse : 0.28789258003234863 [2022/08/10 16:11:08] ppocr DEBUG: rec_res num  : 3, elapse : 1.6108949184417725 省份:浙江    价格2470.00 [2022/08/10 16:11:08] ppocr DEBUG: dt_boxes num : 3, elapse : 0.28465819358825684 [2022/08/10 16:11:10] ppocr DEBUG: rec_res num  : 3, elapse : 1.4023168087005615 省份:江苏    价格1770.00 [2022/08/10 16:11:10] ppocr DEBUG: dt_boxes num : 3, elapse : 0.2079639434814453 [2022/08/10 16:11:12] ppocr DEBUG: rec_res num  : 3, elapse : 1.418123483657837 省份:江西    价格2250.00 [2022/08/10 16:11:12] ppocr DEBUG: dt_boxes num : 3, elapse : 0.2044999599456787 [2022/08/10 16:11:13] ppocr DEBUG: rec_res num  : 3, elapse : 1.408416986465454 省份:安徽    价格2360.00 [2022/08/10 16:11:13] ppocr DEBUG: dt_boxes num : 3, elapse : 0.2003467082977295 [2022/08/10 16:11:15] ppocr DEBUG: rec_res num  : 3, elapse : 1.4108216762542725 省份:河南    价格1905.00 [2022/08/10 16:11:15] ppocr DEBUG: dt_boxes num : 3, elapse : 0.30034303665161133 [2022/08/10 16:11:17] ppocr DEBUG: rec_res num  : 3, elapse : 1.5090062618255615 省份:河北    价格1830.00 [2022/08/10 16:11:17] ppocr DEBUG: dt_boxes num : 3, elapse : 0.2920353412628174 [2022/08/10 16:11:19] ppocr DEBUG: rec_res num  : 3, elapse : 1.4099595546722412 省份:山东    价格2230.00 [2022/08/10 16:11:19] ppocr DEBUG: dt_boxes num : 3, elapse : 0.20354890823364258 [2022/08/10 16:11:20] ppocr DEBUG: rec_res num  : 3, elapse : 1.4975931644439697 省份:福建    价格2070.00 [2022/08/10 16:11:21] ppocr DEBUG: dt_boxes num : 3, elapse : 0.20367145538330078 [2022/08/10 16:11:22] ppocr DEBUG: rec_res num  : 3, elapse : 1.399881362915039 省份:湖南    价格1800.00 [2022/08/10 16:11:22] ppocr DEBUG: dt_boxes num : 3, elapse : 0.28646397590637207 [2022/08/10 16:11:24] ppocr DEBUG: rec_res num  : 3, elapse : 1.4092700481414795 省份:湖北    价格2280.00 [2022/08/10 16:11:24] ppocr DEBUG: dt_boxes num : 3, elapse : 0.2845890522003174 [2022/08/10 16:11:25] ppocr DEBUG: rec_res num  : 3, elapse : 1.402533769607544 省份:广西    价格2280.00 [2022/08/10 16:11:26] ppocr DEBUG: dt_boxes num : 3, elapse : 0.20486736297607422 [2022/08/10 16:11:27] ppocr DEBUG: rec_res num  : 3, elapse : 1.3977165222167969 省份:山西    价格1915.00 [2022/08/10 16:11:27] ppocr DEBUG: dt_boxes num : 3, elapse : 0.2967183589935303 [2022/08/10 16:11:29] ppocr DEBUG: rec_res num  : 3, elapse : 1.7988090515136719 省份:陕西    价格1990.00 [2022/08/10 16:11:29] ppocr DEBUG: dt_boxes num : 3, elapse : 0.2913792133331299 [2022/08/10 16:11:31] ppocr DEBUG: rec_res num  : 3, elapse : 1.5969874858856201 省份:宁夏    价格1700.00 [2022/08/10 16:11:31] ppocr DEBUG: dt_boxes num : 3, elapse : 0.2055673599243164 [2022/08/10 16:11:33] ppocr DEBUG: rec_res num  : 3, elapse : 1.5008113384246826 省份:甘肃    价格1815.00 [2022/08/10 16:11:33] ppocr DEBUG: dt_boxes num : 3, elapse : 0.28537464141845703 [2022/08/10 16:11:34] ppocr DEBUG: rec_res num  : 3, elapse : 1.4073350429534912 省份:新疆    价格1845.00 [2022/08/10 16:11:35] ppocr DEBUG: dt_boxes num : 3, elapse : 0.2010488510131836 [2022/08/10 16:11:36] ppocr DEBUG: rec_res num  : 3, elapse : 1.484731674194336 省份:青海    价格1835.00 [2022/08/10 16:11:36] ppocr DEBUG: dt_boxes num : 3, elapse : 0.20502114295959473 [2022/08/10 16:11:38] ppocr DEBUG: rec_res num  : 3, elapse : 1.3996272087097168 省份:海南    价格1785.00 [2022/08/10 16:11:38] ppocr DEBUG: dt_boxes num : 3, elapse : 0.2883188724517822 [2022/08/10 16:11:39] ppocr DEBUG: rec_res num  : 3, elapse : 1.4016520977020264 省份:贵州    价格1915.00 [2022/08/10 16:11:40] ppocr DEBUG: dt_boxes num : 3, elapse : 0.2922041416168213 [2022/08/10 16:11:41] ppocr DEBUG: rec_res num  : 3, elapse : 1.502861738204956 省份:云南    价格1965.00 [2022/08/10 16:11:41] ppocr DEBUG: dt_boxes num : 3, elapse : 0.2015540599822998 [2022/08/10 16:11:43] ppocr DEBUG: rec_res num  : 3, elapse : 1.3932435512542725 省份:四川    价格2350.00 [2022/08/10 16:11:43] ppocr DEBUG: dt_boxes num : 3, elapse : 0.20165038108825684 [2022/08/10 16:11:44] ppocr DEBUG: rec_res num  : 3, elapse : 1.310579538345337 省份:西藏    价格1785.00 [2022/08/10 16:11:45] ppocr DEBUG: dt_boxes num : 3, elapse : 0.204742431640625 [2022/08/10 16:11:46] ppocr DEBUG: rec_res num  : 3, elapse : 1.399357557296753 省份:内蒙古    价格1765.00 [2022/08/10 16:11:46] ppocr DEBUG: dt_boxes num : 3, elapse : 0.19914031028747559 [2022/08/10 16:11:48] ppocr DEBUG: rec_res num  : 3, elapse : 1.3909227848052979 省份:辽宁    价格1915.00 [2022/08/10 16:11:48] ppocr DEBUG: dt_boxes num : 3, elapse : 0.20081448554992676 [2022/08/10 16:11:49] ppocr DEBUG: rec_res num  : 3, elapse : 1.394876480102539 省份:吉林    价格1735.00
2.3、使用pymysql把数据导入到mysql(受限于这是一个在线的notebook,无法调用本地摄像头或者无法进行鼠标键盘的交互。下面的代码仅供展示作用,不要运行!)

In [1]

    # 打开数据库连接     conn1 = pymysql.connect(host='localhost',                             user='root',                             password='123456',                             database='test_to_feitie')  # 表名     # 使用cursor()方法获取操作游标     cursor = conn1.cursor()     # SQL 更新语句     sql = "insert into test1 values(%s,%s,%s)"     cursor.execute(sql, [all_address[i], "2022-8-08", money_all[i]])  # 录入格式为:省份varchar,时间varchar,价格:int     conn1.commit()     cursor.close()     conn1.close()     print("成功把"+all_address[i]+"今日铁价写入test1中")
2.4.1、使用flask搭建后端。Flask是一个轻量级的可定制框架,使用Python语言编写,较其他同类型框架更为灵活、轻便、安全且容易上手。它可以很好地结合MVC模式进行开发,开发人员分工合作,小型团队在短时间内就可以完成功能丰富的中小型网站或Web服务的实现。另外,Flask还有很强的定制性,用户可以根据自己的需求来添加相应的功能,在保持核心功能简单的同时实现功能的丰富与扩展,其强大的插件库可以让用户实现个性化的网站定制,开发出功能强大的网站。下面是搭建后端的代码。(受限于这是一个在线的notebook,无法调用本地摄像头或者无法进行鼠标键盘的交互。下面的代码仅供展示作用,不要运行!)

In [ ]

from flask import Flask from flask import render_template from flask import jsonify import utils app = Flask(__name__) @app.route('/') def h_1():     return render_template("main.html") @app.route("/c2")  # 搭建c2路由用于获取mysql中的省份名字/价格信息 def get_c2_data():     res = []     for tup in utils.get_c2_data():         res.append({"name":tup[0],"value":int(tup[1])})     return jsonify({"data":res})  # 转化为json格式的数据 @app.route("/l1")  # 搭建l1路由用于获取MySQL中的佛山市所有价格数据 def get_l1_data():     data = utils.get_l1_data()     time,feitie,shengtie = [],[],[]     for a,b,c in data[:]:         time.append(a)         feitie.append(b)         shengtie.append(c)     return jsonify({"time":time,"feitie":feitie,"shengtie":shengtie}) if __name__ == '__main__':     app.run()
2.4.2、使用pymysql获取保存的数据(受限于这是一个在线的notebook,无法调用本地摄像头或者无法进行鼠标键盘的交互。下面的代码仅供展示作用,不要运行!)

In [ ]

import pymysql def get_conn():     # 打开数据库连接     conn = pymysql.connect(host='localhost',                            user='root',                            password='123456',                            database='test_to_feitie')     # 使用cursor()方法获取操作游标     cursor = conn.cursor()     return conn, cursor def close_conn(conn,cursor):     cursor.close()     conn.close() def query(sql,*args):     conn, cursor = get_conn()     cursor.execute(sql,args)     res = cursor.fetchall()     close_conn(conn, cursor)     return res def get_c2_data():     # sql = "select address,money from test1"     sql = "select address,money from test1 where(times="2022-8-08")"     res = query(sql)     return res def get_l1_data():     sql = "select time,feitie,shengtie from foshan_test1"     res = query(sql)     return res if __name__ == "__main__":     print(get_l1_data())

以上就是使用paddleOCR完成价格提取并实现可视化的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/737502.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
航天飞机的创新实践
上一篇 2025年11月25日 13:45:19
Java中跨类访问对象属性:泛型与类型安全深度解析
下一篇 2025年11月25日 13:45:22

相关推荐

  • composer require-dev和require有什么不同_Composer Require与Require-Dev区别解析

    require用于声明项目运行必需的依赖,如框架、数据库组件和第三方SDK,这些包会随项目部署到生产环境;2. require-dev用于声明仅在开发和测试阶段需要的工具,如PHPUnit、PHPStan、Faker等,不会默认部署到生产环境;3. 安装时composer install根据环境决定…

    2026年5月10日
    1000
  • 开源免费PHP工具 PHP开发效率提升利器

    推荐开源免费PHP开发工具以提升效率:VS Code、Sublime Text轻量高效,PhpStorm专业强大;调试用Xdebug、Kint、Ray;依赖管理选Composer;代码质量工具包括PHPStan、Psalm、PHP_CodeSniffer;数据库管理可用%ignore_a_1%MyA…

    2026年5月10日
    000
  • Matplotlib 地图中多类型图例的创建与优化

    Matplotlib 地图中多类型图例的创建与优化Matplotlib 地图中多类型图例的创建与优化Matplotlib 地图中多类型图例的创建与优化Matplotlib 地图中多类型图例的创建与优化

    本教程旨在解决matplotlib地图可视化中,如何在一个图例中同时展示颜色块(如区域分类)和自定义标记(如特定兴趣点)的问题。文章详细介绍了当传统`patch`对象无法正确显示标记时,如何利用`matplotlib.lines.line2d`创建标记图例句柄,并将其与颜色块图例句柄合并,从而生成一…

    2026年5月10日 用户投稿
    100
  • Golang JSON序列化:控制敏感字段暴露的最佳实践

    本教程探讨golang中如何高效控制结构体字段在json序列化时的可见性。当需要将包含敏感信息的结构体数组转换为json响应时,通过利用`encoding/json`包提供的结构体标签,特别是`json:”-“`,可以轻松实现对特定字段的忽略,从而避免敏感数据泄露,确保api…

    2026年5月10日
    000
  • 利用海象运算符简化条件赋值:Python教程与最佳实践

    本文旨在探讨Python中海象运算符(:=)在条件赋值场景下的应用。通过对比传统if/else语句与海象运算符,以及条件表达式,分析海象运算符在简化代码、提高可读性方面的优势与局限性。并通过具体示例,展示如何在列表推导式等场景下合理使用海象运算符,同时强调其潜在的复杂性及替代方案,帮助开发者更好地掌…

    2026年5月10日
    100
  • Debian syslog性能优化技巧有哪些

    提升Debian系统syslog (通常基于rsyslog)性能,关键在于精简配置和高效处理日志。以下策略能有效优化日志管理,提升系统整体性能: 精简配置,高效加载: 在rsyslog配置文件中,仅加载必要的输入、输出和解析模块。 使用全局指令设置日志级别和格式,避免不必要的处理。 自定义模板: 创…

    2026年5月10日
    000
  • 比特币新手教程 比特币交易平台有哪些

    比特币是一种去中心化的数字货币,基于区块链技术实现点对点交易,具有匿名性、有限发行和不可篡改等特点;新手可通过交易所购买,P2P交易获得比特币,常用平台包括Binance、OKX和Huobi;交易流程包括注册账户、实名认证、绑定支付方式、充值法币并下单购买,可选择市价单或限价单;比特币存储方式有交易…

    2026年5月10日
    000
  • c++中的SFINAE技术是什么_c++模板编程中的SFINAE原理与应用

    SFINAE 是“替换失败不是错误”的原则,指模板实例化时若参数替换导致错误,只要存在其他合法候选,编译器不报错而是继续重载决议。它用于条件启用模板、类型检测等场景,如通过 decltype 或 enable_if 控制函数重载,实现类型特征判断。尽管 C++20 引入 Concepts 简化了部分…

    2026年5月10日
    000
  • Go语言mgo查询构建:深入理解bson.M与日期范围查询的正确实践

    本文旨在解决go语言mgo库中构建复杂查询时,特别是涉及嵌套`bson.m`和日期范围筛选的常见错误。我们将深入剖析`bson.m`的类型特性,解释为何直接索引`interface{}`会导致“invalid operation”错误,并提供一种推荐的、结构清晰的代码重构方案,以确保查询条件能够正确…

    2026年5月10日
    100
  • RichHandler与Rich Progress集成:解决显示冲突的教程

    在使用rich库的`richhandler`进行日志输出并同时使用`progress`组件时,可能会遇到显示错乱或溢出问题。这通常是由于为`richhandler`和`progress`分别创建了独立的`console`实例导致的。解决方案是确保日志处理器和进度条组件共享同一个`console`实例…

    2026年5月10日
    000
  • Golang goroutine与channel调试技巧

    使用go run -race检测数据竞争,结合runtime.NumGoroutine监控协程数量,通过pprof分析阻塞调用栈,利用select超时避免永久阻塞,有效排查goroutine泄漏、死锁和数据竞争问题。 Go语言的goroutine和channel是并发编程的核心,但它们也带来了调试上…

    2026年5月10日
    000
  • 使用 Jupyter Notebook 进行探索性数据分析

    Jupyter Notebook通过单元格实现代码与Markdown结合,支持数据导入(pandas)、清洗(fillna)、探索(matplotlib/seaborn可视化)、统计分析(describe/corr)和特征工程,便于记录与分享分析过程。 Jupyter Notebook 是进行探索性…

    2026年5月10日
    000
  • 《魔兽世界》将于6月11日开启国服回归技术测试

    《魔兽世界》将于6月11日开启国服回归技术测试《魔兽世界》将于6月11日开启国服回归技术测试《魔兽世界》将于6月11日开启国服回归技术测试《魔兽世界》将于6月11日开启国服回归技术测试

    《%ign%ignore_a_1%re_a_1%》官方宣布,将于6月11日开启国服回归技术测试,时间为7天,并称可以在6月内正式开服,玩家们可以访问官网下载战网客户端并预下载“巫妖王之怒”客户端,技术测试详情见下图。 WordAi WordAI是一个AI驱动的内容重写平台 53 查看详情 以上就是《…

    2026年5月10日 用户投稿
    200
  • php常量怎么用_PHP常量(define/const)定义与使用方法

    PHP中可通过define函数和const关键字定义常量,用于存储不可变值。define适用于全局作用域,支持动态名称和条件定义,如define(‘SITE_NAME’, ‘MyWebsite’);const在编译时生效,语法简洁但限制多,只能在类或全…

    2026年5月10日
    000
  • 如何在HTML中插入表单元素_HTML表单控件与输入类型使用指南

    HTML表单通过标签构建,包含action和method属性定义数据提交目标与方式,常用input类型如text、password、email等适配不同输入需求,配合label、required、placeholder提升可用性,结合textarea、select、button等控件实现完整交互,是…

    2026年5月10日
    100
  • 网站标题关键词更新后,搜索引擎为何仍显示旧标题?

    网站标题更新后,搜索引擎为何显示旧标题? 网站SEO优化中,站长常修改网站标题关键词,期望搜索结果显示自定义标题。然而,即使更新标签、meta keywords、meta description和结构化数据中的name属性后,搜索结果仍显示旧标题,这令人费解。本文将对此进行解释。 问题:站长修改了网…

    2026年5月10日
    100
  • 创建指定大小并填充特定数据的Golang文件教程

    本文将介绍如何使用Golang创建一个指定大小的文件,并用特定数据填充它。我们将使用 `os` 包提供的函数来创建和截断文件,从而实现快速生成大文件的目的。示例代码展示了如何创建一个10MB的文件,并将其填充为全零数据。掌握这些方法,可以方便地在例如日志系统或磁盘队列等场景中,预先创建测试文件或初始…

    2026年5月10日
    000
  • Python命令怎样使用profile分析脚本性能 Python命令性能分析的基础教程

    使用Python的cProfile模块分析脚本性能最直接的方式是通过命令行执行python -m cProfile your_script.py,它会输出每个函数的调用次数、总耗时、累积耗时等关键指标,帮助定位性能瓶颈;为进一步分析,可将结果保存为文件python -m cProfile -o ou…

    2026年5月10日
    000
  • 使用 WebCodecs VideoDecoder 实现精确逐帧回退

    本文档旨在解决在使用 WebCodecs VideoDecoder 进行视频解码时,实现精确逐帧回退的问题。通过比较帧的时间戳与目标帧的时间戳,可以避免渲染中间帧,从而提高用户体验。本文将提供详细的解决方案和示例代码,帮助开发者实现精确的视频帧控制。 在使用 WebCodecs VideoDecod…

    2026年5月10日
    000
  • 如何插入查询结果数据_SQL插入Select查询结果方法

    如何插入查询结果数据_SQL插入Select查询结果方法如何插入查询结果数据_SQL插入Select查询结果方法如何插入查询结果数据_SQL插入Select查询结果方法如何插入查询结果数据_SQL插入Select查询结果方法

    使用INSERT INTO…SELECT语句可高效插入数据,通过NOT EXISTS、LEFT JOIN、MERGE语句或唯一约束避免重复;表结构不一致时可通过别名、类型转换、默认值或计算字段处理;结合存储过程可提升可维护性,支持参数化与动态SQL。 将查询结果数据插入到另一个表中,可以…

    2026年5月10日 用户投稿
    000

发表回复

登录后才能评论
关注微信