爬虫程序又莫名崩溃了?教你这一招轻松解决!

Playwright爬虫实战:从动态渲染到反爬对抗的完整指南 在Web数据抓取领域,处理动态渲染内容一直是核心挑战。传统爬虫工具如requests库难以应对JavaScript生成的内容,而Selenium等浏览器自动化方案又常面临环境配置复杂、执行效率低下的问题。其技术原理在于通过直接控制浏览器内核,实现对页面完整渲染状态的访问与交互,从而从根本上解决了动态内容获取的难题。这一能力为爬虫开发带来了显著的技术价值:开发者无需再与复杂的反爬机制进行底层对抗,可将精力集中于数据提取逻辑本身。在应用场景上,它尤其适用于单页面应用(SPA)数据抓取、需要模拟登录的复杂流程以及 阅读详情

每当我们写爬虫的时候,短暂的代码运行与抓取如果期间出现异常情况,我们可以及时的发现。可实际的爬虫开发项目往往运行需要耗时,对于增量式爬虫有时也是需要放到服务器上面跑的。这样我们就不能及时的观察到异常情况,那有没有比较容易实现的技术来解决这样的问题呢?(经验总结在最后)

答案是肯定的,有!那就是使用邮件通知,那具体如何操作呢?

接下来我来模拟写一下需求:

当爬虫出现故障时,第一时间通知程序员小哥哥来维护,采用邮件通知的方式。

那我们首先来介绍一下 Python 当中支持 Smtp 协议模块叫什么名字,有以下两个模块以及他们对应的作用:

email负责构造邮件

smtplib负责发送邮件

我们这里使用大家常用的 QQ 邮箱作为演示,小伙伴也可以使用其他邮箱可自行选择。在使用 QQ 邮箱时需要做以下配置。

1. QQ 邮箱配置

这里我们使用 SMTP 发信功能所以,您需要先开启 SMTP 发信功能才能通过 SMTP 接口发送邮件。

SMTP 协议是一个简单的邮件传输协议,利用它您可以将邮件发送给别人。此协议使用命令和应答在客户端与服务器之间传输报文。即客户端发出一个命令,服务器返回一个应答。发送方与接收方进行一问一答的交互,由发送方控制这个对话。

我先登陆到我们的 QQ 邮箱,界面如下:
在这里插入图片描述
选择设置,进入到如下界面:
在这里插入图片描述
找到:POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务
在这里插入图片描述
QQ 邮箱 SMTP 服务器地址:smtp.qq.com, ssl端口:465。

需要其他的服务器地址以及端口的小伙伴可以点击此链接:常用邮箱 SMTP 服务器地址大全

2. Python 发送邮件

以下实例你需要修改:发件人邮箱(你的QQ邮箱),密码,收件人邮箱(可发给自己)

import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr

my_sender = '1432803776@qq.com'  # 发件人邮箱账号
my_pass = 'xxxxxxxxx'           # 发件人邮箱授权码 不是qq密码   
my_user = '1432803776@qq.com'    # 收件人邮箱账号,我这边发送给自己

def mail():
    ret = True
    try:
        msg = MIMEText('填写邮件内容', 'plain', 'utf-8')
        msg['From'] = formataddr(["AI悦创", my_sender])  # 括号里的对应发件人邮箱昵称、发件人邮箱账号
        msg['To'] = formataddr(["aiyuechuang", my_user])  # 括号里的对应收件人邮箱昵称、收件人邮箱账号
        msg['Subject'] = "发送邮件测试"  # 邮件的主题,也可以说是标题

        server = smtplib.SMTP_SSL("smtp.qq.com", 465)  # 发件人邮箱中的SMTP服务器,端口是25
        server.login(my_sender, my_pass)  # 括号中对应的是发件人邮箱账号、邮箱授权码
        server.sendmail(my_sender, [my_user, ], msg.as_string())  # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
        server.quit()  # 关闭连接
    except Exception:  # 如果 try 中的语句没有执行,则会执行下面的 ret=False
        ret = False
    return ret

ret = mail()
if ret:
    print("邮件发送成功")
else:
    print("邮件发送失败")

运行代码效果如下:
在这里插入图片描述
3. 实战

爬虫脚本是基于网站的结构去写的,但是随着互联网的发展,很多公司的页面结构会发生变化,发生的变化就会导致我们写的爬虫失效,最主要的失效方式是 xpath 的失效。随着我们写的爬虫越来越多,越就越来越难以发现这些失效的脚本,导致数据更新失败,不及时,或者不满足抓取的质量和数量要求。这就需要对爬虫的脚本进行监控。

监控的目的是让数据及时的更新,脚本及时的发现 bug 以及解决 bug。提高我们的工作效率。更好的保证线上数据产品的优质性。

目标网站:糗事百科>>> https://www.qiushibaike.com/text/

爬虫代码如下:

import requests
from bs4 import BeautifulSoup
from requests.exceptions import RequestException
headers = {
  'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36',
}

class QiuShiBaiKe(object):
  def __init__(self, url):
    self.url = url
    self.headers = headers

  def requests_func(self):
    try:
      response = requests.get(self.url, headers = headers)
      if response.status_code == 200:
        return response.text
      return None
    except RequestException:
      return None

  def parse_page(self, html):
    soup = BeautifulSoup(html, 'lxml')
    result = soup.select('#content .content-block .col1 .article')
    for res in result:
      # imgs = res.select('.author a img')
      # print(imgs)
      img = res.select('.author a img')[0].get('src')
      # img = img[:len(user_name)-23]
      img = img[:img.find('.jpg') + len('.jpg')]
      user_name = list(res.select('.author a h2')[0].stripped_strings)[0]
      joke = list(res.select('.content span')[0].stripped_strings)[0]
      yield {
        'img':img,
        'user_name':user_name,
        'joke':joke,
      }
  def save_file(self, content):
    with open("joke.txt", 'a+' ,encoding = "utf-8")as f:
      f.write(content+"\n")

  def main(self):
    html = self.requests_func()
    for res in self.parse_page(html):
      self.save_file(str(res))
      print(res)

if __name__ == '__main__':
  urls = ['https://www.qiushibaike.com/text/page/{}/'.format(page) for page in range(1, 14)]
  for url in urls:
    result = QiuShiBaiKe(url)
    result.main()

3.1 添加邮件通知

把邮件通知单独创建一个 .py 文件,代码如下:

import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr

my_sender = '1432803776@qq.com'  # 发件人邮箱账号
my_pass = 'xxxxxx'           # 发件人邮箱授权码 不是qq密码   
my_user = '1432803776@qq.com'    # 收件人邮箱账号,我这边发送给自己

def email_func(Email_content = None, Email_subject = None):
  try:
    msg = MIMEText(Email_content, 'plain', 'utf-8')
    msg['From'] = formataddr(["AI悦创", my_sender])  # 括号里的对应发件人邮箱昵称、发件人邮箱账号
    msg['To'] = formataddr(["aiyuechuang", my_user])  # 括号里的对应收件人邮箱昵称、收件人邮箱账号
    msg['Subject'] = Email_subject  # 邮件的主题,也可以说是标题

    server = smtplib.SMTP_SSL("smtp.qq.com", 465)  # 发件人邮箱中的SMTP服务器,端口是25
    server.login(my_sender, my_pass)  # 括号中对应的是发件人邮箱账号、邮箱授权码
    server.sendmail(my_sender, [my_user, ], msg.as_string())  # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
    server.quit()  # 关闭连接
    print("邮件发送成功")
  except Exception:
    print("邮件发送失败")

if __name__ == '__main__':
  email_func("AIyuechuang", "hjb")

上面的代码修改完毕之后,我们需要在爬虫的函数里面调用该函数,所以我们先导入函数:

from email_f import email_func

这里我们简单的进行调用函数:fromemail_fimportemail_func 更复杂的小伙伴可以自行添加哦。

这里我们为了照顾绝大多数同学,就人工指定爬虫异常时放回特定信息。当然小伙伴还可以直接返回报错信息。

我们编写在请求函数中:

def requests_func(self):
    try:
      response = requests.get(self.url, headers = headers)
      if response.status_code == 200:
        email_func("请求成功, 返回数据", "QiuShiBaiKe_Spider")
        return response.text
      else:
        email_func("请求成功, 没有返回数据!", "QiuShiBaiKe_Spider")
        return None
    except RequestException:
      email_func("请求失败!", "QiuShiBaiKe_Spider")
      return None

我们先正常运行代码查看效果:
在这里插入图片描述
至此,我们的邮件通知功能已经成功应用,这里有一点要跟小伙伴说的就是:为什么要把邮件单独写成一个 .py 文件,因为我们实际工作当中开发需要做到,模块化开发,上面所用到的是最基本的模块化。

3.2 应用场景:

3.2.1 正常更新的

例如糗事百科,每天都要爬取一遍插入数据库的时候,需要增加一个字段更新插入时间 refresh_time 如果爬虫 正常,这样就可以保证,每天的 refresh_time 都是最新的。

3.2.2 不正常更新的

如何监控那些不正常更新的渠道(例如:链家租房),你可以写 sql 语句查询每个渠道的更新时间。如果是最新的更新时间则说明是正常;如果不是判断多久没有更新,说爬虫数据异常。这时需要给指定的负责人发邮件,让他修改代码,使得爬虫正常运行。

3.2.3 爬虫中邮件通知一般加在哪呢?

看到这里,表示你已经成功使用并监控你的爬虫,不过对于新手可能会有疑问:我们一般把异常通知加载呢?这里列出几点来:

  1. 这里小伙伴们在编写代码中要用好 try…except ,这里要注意:except后面如果指定了报错类型我们可以在你使用 except的后面添加邮件通知。

  2. 发起 get、post、head 等请求时,需要添加异常处理,因为有时候你会遇到一些:Url 异常、headers 所带参数被该网站的反爬技术改变等,这样我们添加之后就能快速定位到哪里报错。

  3. 解析网站时,有时会因为网站的 HTML 结构或者 JSON、Ajax 改变,这时我们也需要用到邮件通知。

4. 总结

这里我们讲到了 Python 发送邮件,并在爬虫中调用。在什么地方添加邮件通知会帮助我们快速出现问题的代码位置:

try…except :要添加

发起请求时要添加:get、post、head,因为有事还有一些应为你 SSL 造成问题。

解析网站时,有事数据未抓取到,无法提取而造成的报错,也需要在解析网站的位置添加邮件通知。

以上便是我总结的一些爬虫报警实战经验。希望对你的工作有所帮助。更多干货内容,欢迎关注公众号:知了python

Python爬虫实战:Selenium无头模式高效抓取动态网页数据 在Web数据采集领域,动态网页因其内容通过JavaScript异步加载,给传统基于静态HTML解析的爬虫技术带来了挑战。其核心原理在于现代Web应用普遍采用前后端分离架构,页面初始加载后,数据通过Ajax请求动态填充,导致直接获取的源码中不包含目标信息。为应对此问题,Selenium等浏览器自动化工具应运而生,它们能驱动真实浏览器环境,完整执行JavaScript并渲染最终DOM,从而获取动态生成的内容。这项技术的核心价值在于解决了传统爬虫无法处理的交互式页面数据采集难题,广泛应用于舆情监控、价格追踪、学术 阅读详情

相关推荐

人机验证实战指南:从行为建模到协议层对抗

人机验证已超越传统OCR识别,演进为融合行为生物特征、设备指纹与网络协议分析的多维防御体系。其核心原理是通过建模人类操作的生理约束(如Fitts定律、Hurst指数)和设备交互的协议指纹(如TLS Client Hello字段熵值),构建机器难以复现的行为-硬件-网络联合特征空间。这种技术路径显著提升了自动化攻击的成本阈值,在电商风控、金融API网关等高风险场景中实现毫秒级实时决策与低误判率平衡。本文聚焦真实工程落地中的关键参数设计逻辑(如320ms滑块拖动阈值)、跨层协同架构(前端感知/中台决策/后端执行

weixin_33646989的博客 375

python写网站容易崩吗_python程序爬虫总是崩溃

写的一个爬虫程序,主要用到以下库。但是伴随着代码增多,功能增多。经常性的程序崩溃现象,逐渐显现。pyqt5_5.8.2,requests.get,selenium+chorme,threading.Thread,queue.Queue多次完善代码与程序,甚至已经尝试了各种python版本,与pyqt5版本。甚至pyqt5-tools的版本也换了,都无法处理程序崩溃。关于访问系统的地方,都已经加了线...

weixin_39760368的博客 598

从502错误到HTTPS加密:深入解析HTTP协议核心概念与实战应用

HTTP协议是Web通信的基石,定义了客户端与服务器之间请求与响应的标准格式。其工作原理基于请求-响应模型,通过预定义的请求方法、状态码和报文头部完成数据交换。理解HTTP协议的技术价值在于,它是构建现代Web应用、API接口和实现前后端分离的基础,直接影响着网络性能、安全性与开发调试效率。在应用场景上,无论是网站开发、移动应用后端接口设计,还是网络爬虫和API调试,都离不开对HTTP协议的深入掌握。本文将从一次典型的502 Bad Gateway错误切入,系统拆解HTTP报文结构、八种请求方法的语义差异,

weixin_30706691的博客 493

程序人生 - 不要触犯法律,编写安全爬虫的几点建议

程序人生 - 不要触犯法律,编写安全爬虫的几点建议

1135

STM32单片机远程升级

stm32远程升级

fang_yang_wa的博客 1万+

Cadence 16.6与17.4双版本共存避坑指南:从安装顺序到环境变量配置

本文是一份详细的Cadence 16.6与17.4双版本共存实战指南。针对硬件工程师和PCB设计者同时处理新旧项目的需求,文章深入剖析了版本冲突根源,并提供了从安装顺序、环境隔离到故障排查的完整解决方案。核心在于通过环境变量精细化管理与脚本控制,实现两个版本的稳定共存与无缝切换,有效解决了文件关联混乱、交互布局失效等常见问题。

html8的博客 986

为何大量网站不能抓取?爬虫突破封禁的6种常见方法

转载自:https://www.cnblogs.com/junrong624/p/5533655.html 在互联网上进行自动数据采集(抓取)这件事和互联网存在的时间差不多一样长。今天大众好像更倾向于用“网络数据采集”,有时会把网络数据采集程序称为网络机器人(bots)。最常用的方法是写一个自动化程序向网络服务器请求数据(通常是用 HTML 表单或其他网页文件),然后对数据进行解析,提取需要的信息。 本文假定读者已经了解如何用代码来抓取一个远程的 URL,并具备表单如何提交及 JavaScri.

BigWhite_z2Z的博客 5466

RH850_U2A系列HSM安全核开启但是固件未烧录导致无法启动也无法再烧入固件废板问题分析解决

hsm核导致的安全锁死补救方案

u011941262的博客 1737

爬虫中常见的问题,常见的反爬机制

原文来源:https://www.cnblogs.com/Eeyhan/p/11520608.html 1.请求头之User-agent 这个稍微接触过一点点爬虫的应该都不陌生,不是说接触Python爬虫,不管你用什么开发语言来写爬虫,应该都会用到这个。大概解释一下,就是一个身份的象征,这个可以用浏览器自带的调试工具查看,访问一个网站的时候,按f12键或者鼠标右键打开调试(有的浏览器叫检...

eli的博客 1万+

网卡Inter (R) Wi-Fi 6 AX201突然故障 错误代码10,无法找到无线网络,蓝牙也无效了

问题描述 说来也是坑,简直就莫名其妙。早上在工位上,电脑一切正常(一直用的是无线网络),然后周五准备开周会了,所以拔掉电脑外接设备(电源线,鼠标,外接显示器)拿起电脑到会议室。到了会议室之后,无线网断开了(但一般是不会断开的,都在公司范围内),所以选择重连,但发现已经没有无线网络列表了。 电脑机型:联想YOGA 14s 2021 初步尝试 1、关闭开始飞行模式 - 无果 2、重启并重启 (因为前两天已经提醒过有windows更新,趁这个机会就更新并重启了)- 无果 3、下载鲁大师、驱动精灵、联想驱动管

疯狂的蜗牛 5万+

如何入门强化学习

很多同学在入门强化学习的时候都会遇到困难,那我这里就简单介绍一下应该如何入门强化学习,并以开源代码为例详解强化学习实战。

seeksister的博客 3304

爬虫运行成功但没数据_爬虫程序又莫名崩溃了?教你这一招轻松解决

每当我们写爬虫的时候,短暂的代码运行与抓取如果期间出现异常情况,我们可以及时的发现。可实际的爬虫开发项目往往运行需要耗时,对于增量式爬虫有时也是需要放到服务器上面跑的。这样我们就不能及时的观察到异常情况,那有没有比较容易实现的技术来解决这样的问题呢?(经验总结在最后)答案是肯定的,有!那就是使用邮件通知,那具体如何操作呢?接下来我来模拟写一下需求:当爬虫出现故障时,第一时间通知程序员小哥哥来维护,...

weixin_39581972的博客 4887

AD620仪表放大器模组实战:从调零到信号放大的完整指南

本文详细介绍了AD620仪表放大器模组的实战应用,从调零到信号放大的完整指南。AD620模组以其专业级性能和易用性成为微弱信号放大的首选,集成了AD620芯片、LM358运放和7660电源转换芯片。文章提供了调零技巧、增益设置方法以及单端与差分输入的正确连接方案,并通过心电信号采集和称重传感器等实际案例展示了其广泛应用。

weixin_29290379的博客 378

python jupyter notebook debug_jupyter notebook 使用过程中python莫名崩溃的原因及解决方式...

最近在使用 Python notebook时老是出现python崩溃的现象,如下图,诱发的原因是“KERNELBASE.dll”,异常代码报“40000015”。折腾半天,发现我启动notebook时是用自定义startup.bat方式方式启动的,bat文件的内容为start C:\Anaconda3\python.exe "C:/Anaconda3/Scripts/jupyter-noteboo...

weixin_39689700的博客 740

【强化学习】11 —— Double DQN算法与Dueling DQN算法

可以看到由于数据点的分布,使得拟合出的价值函数无法与真实的价值函数吻合,甚至在部分区域产生了明显的偏差。Dueling DQN 是 DQN 另一种的改进算法,它在传统 DQN 的基础上只进行了微小的改动,但却能大幅提升 DQN 的表现。这样,即使其中一套神经网络的某个动作存在比较严重的过高估计问题,由于另一套神经网络的存在,这个动作最终使用的值不会存在很大的过高估计问题。.在同一个状态下,所有动作的优势值之和为 0,因为所有动作的动作价值的期望就是这个状态的状态价值。环境的状态包括倒立摆角度的正弦值。

sinat_52032317的博客 1万+

fpga的希尔伯特变换实现

fpga的希尔伯特变换实现零.实现背景一.希尔伯特实现的基本原理2.实现1)matlab仿真1)fpga滤波器实现实现成本:fpga实现采用VIvado的FIR的IP核, 零.实现背景 因为今明工作项目需要使用到希尔伯特变换来处理问题,所以顺便就把设计流程和代码都整理下来,以便供他人使用。选用Xilinx的7系列板子,Vivado平台。 一.希尔伯特实现的基本原理 希尔伯特变换的物理意义十分简单:...

weixin_42219690的博客 1万+

notebook python释放内存_jupyter notebook 使用过程中python莫名崩溃的原因及解决方式...

最近在使用 Python notebook时老是出现python崩溃的现象,如下图,诱发的原因是“KERNELBASE.dll”,异常代码报“40000015”。折腾半天,发现我启动notebook时是用自定义startup.bat方式方式启动的,bat文件的内容为start C:\Anaconda3\python.exe "C:/Anaconda3/Scripts/jupyter-noteboo...

weixin_39670627的博客 1179

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Python 零基础入门:10 分钟搞定 Windows/Mac 环境搭建(附报错速查)

本文是一篇零基础Python环境搭建指南,详细讲解了Windows和Mac系统下的安装步骤及常见问题解决方案。主要内容包括:1. Python版本选择建议(推荐3.8-3.11版本);2. Windows系统从下载到验证的全流程;3. Mac系统适配不同芯片的安装方法;4. 5种常见报错解析及解决方法;5. Python库安装技巧与镜像源配置;6. 多版本管理方案;7. IDE使用问题排查。文章特别强调环境变量配置、权限管理等易错点,并提供了实用小技巧,帮助新手10分钟内完成环境搭建并理解底层原理。

xiaojie963的博客 1390

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

1024,致我与Python相互成就的那些年:深夜、曙光与星辰大海

摘要: 文章讲述了一个程序员与Python相伴成长的温暖历程。从初学时的"Hello World"震撼,到与深夜Bug搏斗的顿悟时刻;从编写简单脚本到构建复杂项目的思维跃迁,再到用代码回馈社区的技术传承。通过个人经历展现了Python如何重塑编程认知:其简洁语法降低了入门门槛,而工程化实践则培养了系统性思维。最终,代码不仅是工具,更成为连接技术社区的纽带,体现了程序员在解决问题中获得的成就感和传递技术温度的浪漫。文章以"程序员节"为结,致敬所有用逻辑构建世界、用代码书

qq_44623314的博客 755

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Selenium与pandas read_html实战:高效爬取动态加载的金融数据表格

在数据采集领域,动态网页内容抓取是常见的技术挑战,尤其对于依赖JavaScript渲染的金融数据网站。其核心原理在于模拟真实浏览器行为,以获取完整的DOM结构。Selenium作为自动化测试工具,凭借其执行JavaScript和模拟用户交互的能力,成为解决此问题的关键技术,在量化金融、市场监控等对数据完整性要求高的场景中价值显著。pandas的read_html函数则提供了高效解析HTML表格的途径,能将复杂表格快速转化为结构化的DataFrame。本文将结合集思录可转债数据这一具体应用场景,深入探讨如何将

weixin_30861797的博客 324

动态定价监控实战:从原理到Python实现峰谷价格提醒系统

动态定价是数字经济时代广泛应用的定价策略,其核心原理是通过算法实时调整商品或服务价格,以响应市场供需、时段、用户画像等多种因素。这种机制的技术价值在于优化资源配置、提升平台收益,但也带来了价格不透明的“黑盒”问题,影响了消费者的知情权。在电商、出行、云计算等应用场景中,峰谷价格作为动态定价的典型模式尤为常见。本文聚焦于如何通过技术手段破解这一难题,构建自动化监控方案。我们将深入探讨利用网络爬虫、数据解析和规则引擎等技术,实现价格数据的实时抓取、解析与智能提醒。通过一个完整的Python实战项目,演示从环境搭

weixin_30258901的博客 373

Python价格追踪器:从数据采集到自动化通知的完整实现

在数据驱动的决策场景中,自动化信息采集与处理是提升效率的关键技术。其核心原理是通过程序化手段替代人工操作,实现数据的持续获取、解析与响应。这一技术价值在于将重复性监控任务转化为自动化流程,为电商比价、投资监控等场景提供实时决策支持。具体到工程实践,常涉及网络爬虫、数据存储、规则引擎和任务调度等模块的协同工作。例如,使用Python的requests库进行HTTP请求,结合BeautifulSoup解析HTML,并通过SQLite实现轻量级数据持久化。在应用层面,可构建价格监控系统,当目标商品价格低于预设阈值

weixin_30883311的博客 388

10个真实项目验证的数据科学工程化工具链

数据科学工程化是将算法能力转化为稳定业务价值的关键跃迁。其核心在于解决教科书不讲、但项目高频出现的脏活难题:数据获取不可靠、样本稀缺且敏感、实验过程难以复现、模型交付卡在本地与生产之间。Scrapy提供可维护的爬虫管道设计,YData Synthetic以生成式AI合成合规高保真数据,ydata-profiling实现自动化深度EDA洞察,PyCaret封装标准化建模流程提升迭代效率,spaCy与OpenCV分别夯实NLP与CV的生产级基础能力,Streamlit与Flask分阶段支撑从POC到产品的应用化

weixin_33946020的博客 400

互动媒体艺术创作:从创意编程到物理交互的完整实现指南

计算机视觉和物理计算是当今创意科技领域的核心技术,它们将数字信息与现实世界连接起来,为艺术表达和交互设计提供了全新可能。计算机视觉通过算法识别和理解图像与视频,使机器能够“看见”并响应环境;物理计算则利用传感器、微控制器和执行器,让程序能够感知和操控物理实体。这两项技术的结合,催生了丰富的互动装置、数字艺术和沉浸式体验,广泛应用于展览、公共艺术和娱乐领域。在具体实践中,Processing和Arduino等开源平台因其低门槛和强大社区支持,成为创意实现的首选工具链。通过2019年上海纽约大学互动媒体艺术展的

weixin_34357887的博客 506

【Python入门到精通】基础篇

《Python编程入门指南》摘要(149字): Python作为易学高效的编程语言,凭借简洁语法、丰富生态和跨平台特性广受欢迎。本文从环境配置到基础语法系统介绍Python学习路径,涵盖三大系统安装指南、开发工具选择(IDLE/VS Code等)、编码规范(UTF-8最佳实践)、输入输出功能实现等核心内容。重点讲解变量命名规则、注释规范和代码调试技巧,帮助初学者建立良好的编程习惯。通过"Hello World"示例演示多种运行方式,为后续学习数据类型、流程控制等进阶知识奠定基础,是零基础学员的理想入门教程。

2301_81248642的博客 956
上一篇: 熬了两个通宵写的!终于把多线程和多进程彻底讲明白了!
下一篇: 小白都能看懂!Python机器学习预测乳腺癌疾病案例剖析!
jspython
博客等级 码龄7年 61粉丝 109原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值