Python网络爬虫设计(一)
目录
一、网络爬虫
1、基本的爬虫
2、获取URL
3、查找网页源码关键字
4、代码实现
二、requests库
1、requests的优势和劣势
2、获取网页的其他库
(1)selenium库
(2)pyppeteer库
三、pyppeteer库
1、pyppeteer库的来历
2、pyppeteer库的工作原理
3、pyppeteer相关环境安装
四、协程
1、概念
2、注意事项
五、用pyppeteer获取网页
一、网络爬虫
网络爬虫,简称爬虫,它可以用来在网络上搜集一些数据(比如在搜索引擎上),也可以模拟浏览器的快速操作(比如我们可以用爬虫来实现抢课)
1、基本的爬虫
一个基本的爬虫写法如下:
(1)首先手动找出我们想要获取的网址(URL)
(2)在浏览器中搜索这个网址,查看网页的源代码,在源代码中找出我们想要的内容的字符串的模式(比如我们想要查找一些图片,在网页源码中,图片都有一些固定的关键字,我们通过抓取这些关键字,就可以获取图片)
(3)在程序中我们用URL得到对应的网页
(4)再根据程序中的正则表达式或者BeautifulSoup库来查找关键字,得到对应的内容并保存
2、获取URL
我们先在浏览器上搜索一个关键字:
我们观察这个网页对应的URL:
可以发现,在这个URL中,有一部分是“q = 乐高”,我们就可以猜想,是不是只要把q后面的文字改成我们想要搜索的关键字,就可以到达对应的页面?
我们直接在URL上把q后面的关键词改成“猫”,然后按下回车:
发现果然跳转到了猫的搜索页面!
这就意味着我们可以在代码中,通过修改q后面的数据,来到达对应的目标页面
3、查找网页源码关键字
当我们到达了目标页面,我们想要抓取几个图片,就需要通过页面源码的关键字:
我们在这个“猫”的搜索页面随便找一个图片,右键,选择“复制图像连接”
我们会发现th(略缩图),id等具有标志性的东西,这些都指明了这可能是一个图片
当然,如果看不出来我们可以多复制几个图片的链接,来寻找共同点:
不难发现,很多图片都有/th/id/OIP-这一部分,这可能就是图片链接的共同特点:
右击网页空白处,点击“查看网页源码”,按ctrl + F ,
我们把这串字符复制进去:
按下回车,就能看见在源码的地方,很多处都被标记了这个关键字符串,我们就可以根据这个来爬取想要的图片;
4、代码实现
我们来找一个专门练习爬虫的页面来爬取几个图片(很多网页有反爬技术,最最基础的爬虫代码难以成功)
import re #用来使用正则表达式
import requests #用于HTTP请求
import os #操作文件目录等def getHTML(url): #用于获取目标页面的HTMLfakeHeader = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36 Edg/81.0.416.77'}#定义了一个字典,用来模拟浏览器的请求头,欺骗浏览器try:r = requests.get(url, headers=fakeHeader)#发送一个GET请求到指定的url,并使用我们的假头部r.encoding = r.apparent_encoding#设置编码格式return r.text #返回网页的HTML内容except Exception as e:print(e)return ""#------------------------以上内容可以固定的直接使用------------------------def getPicturePro(n):base_url = "https://spiderbuf.cn" #基础的路径url = "https://spiderbuf.cn/web-scraping-practice/scraping-images-from-web" #目标网页的URL(就是包含图片的)html = getHTML(url) #调用函数,获取目标页面的HTML内容pt = r'<img[^>]+src="([^"]+)"' #正则表达式,用于找到HTML里面的img标签的src属性的值i = 0 #图片个数(方便命名)for x in re.findall(pt, html): #使用正则表达式pt找到html中所有符合的图片路径if x.startswith("/"):x = base_url + x # 检查是否是相对路径,并转换为完整路径if not (x.lower().endswith(".jpg") or x.lower().endswith(".png")): #拼接好后,如果不是jpg或png的图片,跳过不要continuetry:print(x) #输出经过层层筛选的图片路径r = requests.get(x, stream=True) #发送GET请求,获取图片,并以流式下载,防止一次性到内存pos = x.rfind(".") #找到文件扩展名的起始位置if not os.path.exists(r"D:\学习\Python\temp"):os.makedirs(r"D:\学习\Python\temp") #若不存在该目录就创建该目录f = open(r"D:\学习\Python\temp\{0}{1}{2}".format("image", i, x[pos:]), "wb")#打开该目录,并且以image和i来命名f.write(r.content) #把图片写入文件f.close()except Exception as e:print(f"Error downloading {x}: {e}") #若报错就返回错误信息i += 1getPicturePro(1) #传入参数,表示开始执行
输出:
我们再看看文件夹:
二、requests库
在上面的代码中,我们可以看见,requests库的作用是用来发送HTTP请求的,可以完成大量的网络层面的任务
1、requests的优势和劣势
①优势:速度快,且安装简单,我们只需要使用pip命令就能安装requests库,很容易把自己的代码分享给别人使用,即共享性强
②劣势:requests库很容易被反爬虫手段屏蔽,可能一个有一点反爬虫手段的网页就能把这个代码屏蔽掉(比如我们用上面的代码去爬百度的搜索图片,是不能成功的,会被反爬),而且不能获取JavaScript的生成的动态网页。
2、获取网页的其他库
面对刚刚上面requests的缺陷,我们在Python中,也提供了很多库来弥补它的不足
(1)selenium库
selenium库虽然比requests库更强一些,但是它的速度很慢,而且已经被许多网站反爬,可能还是无法成功
(2)pyppeteer库
速度很快,而且目前还没有被很多网站反爬,是一个比较好的选择
三、pyppeteer库
1、pyppeteer库的来历
pyppeteer是puppeteer的Python版本,而puppeteer是谷歌公司推出的可以控制Chrome浏览器的一套编程工具
2、pyppeteer库的工作原理
①启动一个浏览器Chromium,用浏览器装入网页,并且浏览器可以用无头模式(隐藏模式)或者显式模式启动(就是在执行爬取操作的时候用户能否看见浏览器操作页面的具体过程)
②从浏览器中可以获得网页的源代码,若网页就JavaScript程序,获得到的就是JavaScript被浏览器执行后的网页源码
③pyppeteer可以向浏览器发送命令,模拟用户在浏览器上的键盘,鼠标等操作
④selenium和pyppeteer的工作原理相同
3、pyppeteer相关环境安装
我们先在cmd窗口用pip命令下载pyppeteer
pip install pyppeteer
(要求Python版本在3.6及3.6以上)
当然,我们上面提到,我们需要启动一个特殊的浏览器Chromium,所以我们需要下载它:
在安装之前,我们需要确定我们安装了Node.js
安装官网:Node.js — 在任何地方运行 JavaScript
进入之后,我们点击下载LTS版本的(更加稳定)
在安装完成后,我们可以在cmd窗口检查一下是否安装完成:
node -v
npm -v
若安装成功,应该会类似如下:
安装完成之后,我们输入以下命令来安装:
npx @puppeteer/browsers install chrome@stable
在上图中的第六行,显示了安装的位置,我们定位到具体的目录,找到exe文件,可以创建一个快捷方式到桌面:
四、协程
1、概念
协程就是在代码中,前面加了async的函数:
async def scy() :return 0
在调用协程时,必须在前面添加await
await scy()
2、注意事项
(1)协程只能在协程里面调用,也就是说await关键字只能出现在协程里面,出现在外面就会报错!
(2)协程是一种特殊的函数,多个协程可以并行
(3)pyppeteer中的所有函数都是协程
五、用pyppeteer获取网页
代码如下:
import asyncio #是Python的异步 I/O 框架,用于编写单线程并发代码
import pyppeteer as pyp#通过输入的url,获取指定的HTML内容
async def getHTML(url) : #构造一个异步函数browser = await pyp.launch(headless = False , executablePath=r'C:\Users\23639\AppData\Local\Google\Chrome\Application\chrome.exe') #启动一个浏览器,headless就是无头模式,设置成False就会显示浏览器,反之就不会#executablePath指明了Chrom浏览器的可执行路径page = await browser.newPage() #等打开了浏览器,再在浏览器中获取我们想要的页面await page.setUserAgent('Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 safari/537.36')#模拟浏览器的请求头await page.evaluateOnNewDocument(' () => Object. defineProperties (navigator, { webdriver: {get:()=> false } })}')#页面在加载的时候会被执行里面JavaScript代码,目的是防止浏览器检测自动化工具await page.goto(url) #导航到指定的URLtext = await page.content() #获取页面的HTML代码await browser.close() #关闭浏览器return text #返回text内容def getHTMLpro(url) :return asyncio.run(getHTML(url)) #返回页面的HTML内容HTML_result = getHTMLpro("https://cn.bing.com") #调用函数
print(HTML_result)
执行结果:
这就是把我们输入的那个URL的网页给爬取了下来,如果把这个复制到一个文本文档中,把后缀改成.html,就是我们想要的那个页面
以上就是Python网络爬虫设计(一)的全部内容:)
相关文章:
Python网络爬虫设计(一)
目录 一、网络爬虫 1、基本的爬虫 2、获取URL 3、查找网页源码关键字 4、代码实现 二、requests库 1、requests的优势和劣势 2、获取网页的其他库 (1)selenium库 (2)pyppeteer库 三、pyppeteer库 1、pyppeteer库的来历…...
GEO供应商盈达科技发布:AI信源占位白皮书
副标题:生成式AI时代的企业认知主权争夺战 发布日期:2025年4月15日 一、范式重构:从流量入口到认知主权的战略迁移 生成式AI的规则革命 73%的用户决策直接依赖AI生成内容,但68%的引…...
L1-4 拯救外星人
题目 你的外星人朋友不认得地球上的加减乘除符号,但是会算阶乘 —— 正整数 N 的阶乘记为 “N!”,是从 1 到 N 的连乘积。所以当他不知道“57”等于多少时,如果你告诉他等于“12!”,他就写出了“479001600”这个答案。 本题就请你…...
业务摆渡解锁信息孤岛,重塑数字医疗未来
某三甲医院的急诊科突然亮起红灯,一名车祸患者被紧急送入,主治医师需要调取其三个月前在科研专网存储的增强CT影像。若在两年前,这需要两位管理员手动导出、杀毒、跨网传输,耗时40分钟;而现在,系统自动触发…...
OpenCV中的轮廓近似方法详解
文章目录 引言一、什么是轮廓近似?二、OpenCV中的轮廓近似方法2.1Douglas-Peucker算法原理2.2函数原型 三、代码示例3.1. 基本使用 四、参数选择技巧五、与其他轮廓方法的比较六、总结 引言 在计算机视觉和图像处理中,轮廓是物体边界的重要表示形式。Op…...
4种方法将文件映射到内存提升读写速度
背景 考虑到以下应用需求,常将文件映射到内容,以提升读写效果。 高效文件读写:大文件操作时,避免多次read/write系统调用的开销。进程间通信(共享内存):多个进程映射同一文件,实现…...
367. 有效的完全平方数
给你一个正整数 num 。如果 num 是一个完全平方数,则返回 true ,否则返回 false 。 完全平方数 是一个可以写成某个整数的平方的整数。换句话说,它可以写成某个整数和自身的乘积。 不能使用任何内置的库函数,如 sqrt 。 示例 1…...
Ubuntu2404装机指南
因为原来的2204升级到2404后直接嘎了,于是要重新装一下Ubuntu2404 Ubuntu系统下载 | Ubuntuhttps://cn.ubuntu.com/download我使用的是balenaEtcher将iso文件烧录进U盘后,使用u盘安装,默认选的英文版本, 安装后,安装…...
爬虫框架 - Coocan
安装 pip install coocan 演示...
S06-Kep的跨通道传输
每次分享一小点,进步都是实实在在。小编今天又来分享了!之前我们讲到的KepServer软件,是一个具备强大通讯能力的软件,但是当你的上位软件不够灵活的时候,又有多个通道的数据交互的需求,Kep的跨通道传输就为…...
Zookeeper单机三节点集群部署(docker-compose方式)
前提: 服务器需要有docker镜像zookeeper:3.9.3 或能连网拉取镜像 服务器上面新建文件夹: mkdir -p /data/zk-cluster/{data,zoo-cfg} 创建三个zookeeper配置文件zoo1.cfg、zoo2.cfg、zoo3.cfg,配置文件里面内容如下(三个文件内容一样): tickTime=2000 initLimit=10 …...
C++| 深入剖析std::list底层实现:链表结构与内存管理机制
引言 std::list的底层实现基于双向链表,其设计哲学与std::vector截然不同。本文将深入探讨其节点结构、内存分配策略及迭代器实现原理,揭示链表的性能优势和潜在代价。 1. 底层数据结构:双向链表 每个std::list节点包含: 数据域…...
mysql数据库的线程连接数、状态 、最大并发数、缓存等参数配置
mysql数据库的线程连接数、状态 、最大并发数、缓存等参数配置 https://www.modb.pro/db/1784385883449397248 mysql数据库的线程连接数、状态 、最大并发数、缓存等参数配置 SQL命令行临时设置操作 #查看mysql数据库的线程连接数: mysql> show global statu…...
HarmonyOS-ArkUI V2状态-PersistenceV2:持久化存储UI状态
PersistenceV2类是一个与AppStorageV2类用法非常相似的类。因为它俩是子类和父类的关系。如果不了解AppStorageV2,可以先跳转至了解一下这个类。 HarmonyOS-ArkUI V2工具类:AppStorageV2:应用全局UI状态存储-CSDN博客 PersistenceV2相比于其父类AppStorageV2而言,它存储的…...
App测试小工具
前言 最近app测试比较多,每次都得手动输入日志tag,手动安装,测完又去卸载,太麻烦。就搞了小工具使用。 效果预览 每次测试完成,点击退出本次测试,就直接卸载了,usb插下一个手机又可以继续测了…...
ZEP: 一种用于智能体记忆的时序知识图谱架构
摘要 我们介绍了Zep,一种新型的智能体记忆层服务,在深度记忆检索(DMR)基准测试中,超越了现有的最先进系统MemGPT。此外,Zep在比DMR更全面、更具挑战性的评估中表现优异,这些评估更好地反映了现实世界企业应用的需求。尽管现有的基于大语言模型(LLM)的检索增强生成(R…...
800 中值定理
文章目录 前言365366367368369370371372373总结 前言 中值定理貌似是压轴题,但是也没什么难的,我一定可以拿下。 background music : 《还是分开》张叶蕾 365 构造出罗尔定理需要的 F(x) 我现在没啥问题,然后就是要找出两个相等的点&…...
安装fvm可以让电脑同时管理多个版本的flutter、flutter常用命令、vscode连接模拟器
打开 PowerShellfvm安装 dart pub global activate fvm安装完成后,如果显示FVM无法识别,那么需要去添加环境变量path添加这个:C:\Users\Administrator\AppData\Local\Pub\Cache\bin 常用命令 fvm releases 查看用户可以装的flutter版本fvm l…...
多线程、JUC——面试问题自我总结
1、创建线程有几种方式 答:1、通过继承Thread类,但需要注意的是一个类继承Thread就不能继承其他的类了 2、实现Runnable接口 3、实现Callable接口,重写Call方法 4、线程池 2、线程状态是怎么转换 3、实现线程的方式Callable与Runnable区别 …...
LivePortrait 使用指南:让静态照片“动”起来的魔法工具
欢迎来到涛涛聊AI,先看效果 项目地址:https://github.com/KwaiVGI/LivePortrait 在人工智能技术飞速发展的今天,静态照片的“动态化”已成为数字创意领域的热门方向。LivePortrait 凭借其高效性、可控性和逼真效果,成为用户将照片转化为动态视频的首选方案。本文将从技术原…...
Aosp13 文件应用点击apk无反应的处理
最近遇到一个问题,在A13上,打开文件管理应用时,点击apk 无反应或者启动安装进程后安装完成或取消安装进程,再次点击apk 无反应。在此记录该问题。 做一下修改:root/package/ providers/DownloadProvider/下 jenkinsdel…...
用python比较两个mp4是否实质相同
下面这个脚本会使用 ffmpeg 和 ffprobe 检查两个视频文件在以下方面是否“实质相同”: ✅ 检查内容: 分辨率(宽高)帧率视频总帧数音频轨道数量和采样率视频时长视频帧哈希(可选) — 对比前 N 帧的图像感知…...
jmeter中文使用手册
1. 简介 Apache J JMeter 是 100%纯 java 桌面应用程序,被设计用来测试 C/S 结构的软件(例如 web 应用程序)。它可以被用来测试包括基于静态和动态资源程序的性能,例如静态文件,Java Servlets,Java 对象&a…...
【Linux】系统入门
【Linux】系统初识 起源开源 闭源版本内核内核编号 Linux的安装双系统(不推荐)WindowsLinuxvmware虚拟机vitualbox操作系统的镜像centos 7/ubuntu云服务器租用 Linux的操作lsmkdir 文件名pwdadduser userdel -rrm文件名cat /proc/cpuinfolinux支持编程vim code.c./a.out 运行程…...
DP34 【模板】前缀和 -- 前缀和
目录 一:题目 二:算法原理 三:代码实现 一:题目 题目链接:【模板】前缀和_牛客题霸_牛客网 二:算法原理 三:代码实现 #include <iostream> #include <vector> using namespac…...
2025年机动车授权签字人考试题库及答案
一、单选题 1、汽车一般由发动机、( )、车身、电气和电子设备四大部分组成。 A、底盘 B、变速箱 C、离合器 D、驾驶室 答案: A 2、轮式汽车的驱动形式常用符号"nm"表示,其中n代表车轮总数,m代表 ( )。 A、…...
【项目】构建高性能多线程内存池:简化版 tcmalloc 实现指南
00 引言 在高并发应用中,频繁的小块内存申请与释放不仅会带来性能瓶颈,还容易导致内存碎片问题。为此,内存池技术应运而生,而 tcmalloc(Thread-Caching Malloc)作为 Google 开源的高性能内存分配器&#x…...
C++23 Lambda 表达式上的属性:P2173R1 深度解析
文章目录 一、背景与动机(一)Lambda 表达式的发展历程(二)属性的重要性(三)P2173R1 提案的动机 二、语法与使用(一)属性的放置位置1. 普通 Lambda 表达式2. 泛型 Lambda 表达式3. 多…...
libaom 码率控制实验:从理论到实践的深度探索
libaom 码率控制模式介绍 在 libaom 中定义了四种码率控制模式,分别是 VBR、CBR、CQ、Q;枚举类型会被用在编码器配置结构体 aom_codec_enc_cfg 中,通过 rc_end_usage 字段来设置编码器的码率控制策略。具体应用范围如下: AOM_VBR…...
golang的slice扩容过程
Go 语言中的切片扩容机制是 Go 运行时的一个关键部分,它确保切片在动态增加元素时能够高效地管理内存。这个机制是在 Go 运行时内部实现的,涉及了内存分配、数据拷贝和容量调整。扩容的实现主要体现在 runtime.growslice 函数中。下面我们将深入分析 Go …...
MCP 集合网站
分享个超全 MCP 网站,以后找资源不用愁,不谢。 MCPServers | Model Context Protocol Implementation | MCPServers.cnMCPServers - Model Context Protocol Servers for AI model serving. The official platform for MCP, MCPServer, and Model Contex…...
C++: Initialization and References to const 初始化和常引用
cpp primer 5e, P97. 理解 这是一段很容易被忽略、 但是又非常重要的内容。 In 2.3.1 (p. 51) we noted that there are two exceptions to the rule that the type of a reference must match the type of the object to which it refers. The first exception is that we …...
ES通过API操作索引库
1. 导入restClient依赖 <dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>7.12.1</version></dependency> 2. 了解ES核心客户端API 核心区别…...
MySQL:存储函数和存储过程
系列文章目录 1.MySQL编程基础 2.程序控制流语句 3.存储过程 4.游标 5.嵌入式SQL 文章目录 系列文章目录前言一、程序控制流语句:二、存储函数: 1.存储函数的特点:2.存储函数的定义:3.调用存储函数 三、存储过程:…...
visual studio安装字体
以下是在 Windows 系统中将 Visual Studio 字体更换为 JetBrains 字体(如 JetBrains Mono)的完整指南,涵盖从下载安装到高级优化的全流程: 一、下载并安装 JetBrains 字体 获取字体文件 访问 JetBrains Mono 官方下载页面&#x…...
网络安全·第四天·扫描工具Nmap的运用
今天我们要介绍网络安全中常用的一种扫描工具Nmap,它被设计用来快速扫描大型网络,主要功能包括主机探测、端口扫描以及版本检测,小编将在下文详细介绍Nmap相应的命令。 Nmap的下载安装地址为:Nmap: the Network Mapper - Free Se…...
SSM考研助手管理系统
🍅点赞收藏关注 → 添加文档最下方联系方式咨询本源代码、数据库🍅 本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目希望你能有所收获,少走一些弯路。🍅关注我不迷路🍅 项目视频 03…...
通道注意力机制|Channel Attention Neural Network
一、通道注意力机制 论文:ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks 近年来,通道注意力机制在提高深度卷积神经网络CNN的性能方面显示出了巨大潜力。然而,大多数现有方法致力于开发更复杂的注意力模块…...
844. 比较含退格的字符串
给定 s 和 t 两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回 true 。# 代表退格字符。 注意:如果对空文本输入退格字符,文本继续为空。 示例 1: 输入:s "ab#c&quo…...
trl的安装与单GPU多GPU测试
文章目录 0 相关资料1 源码安装2 Qwen2.5-0.5B-Instruct 模型下载3 训练demo4 在多个 GPU/节点上进行训练总结 0 相关资料 https://github.com/huggingface/trl https://blog.csdn.net/weixin_42486623/article/details/134326187 TRL 是一个先进的库,专为训练后基…...
Java项目之基于ssm的学校小卖部收银系统(源码+文档)
项目简介 学校小卖部收银系统实现了以下功能: 学校小卖部收银系统的主要使用者分为: 管理员;管理员使用本系统涉到的功能主要有:主页,个人中心,用户管理,员工管理,商品分类管理&am…...
ES DSL 常用修改语句
字段值替换修改 修改sql update zyzkwjj set dhreplace(dh,"WS","WSS") where dh like %WS% update zyzkwjj set dh replace(dh, WS, DZ),ztm replace(ztm, WS, DZ),zrz replace(zrz, WS, DZ) where dh like %WS% or ztm like %WS% or zrz like %WS%…...
数据结构*集合框架顺序表-ArrayList
集合框架 常见的集合框架 什么是顺序表 顺序表是一种线性表数据结构,它借助一组连续的存储单元来依次存储线性表中的数据元素。一般情况下采用数组存储。 在数组上完成数据的增删查改。 自定义简易版的顺序表 代码展示: public interface IArray…...
(二)Graspnet在mujoco的仿真复现(操作记录)
目录 《复现的项目来源》 一、创建虚拟环境 二、下载manipulator_grasp项目 三、配置环境 1、基于graspnet-baseline项目进行开发 (1)下载 graspnet-baseline项目 (2)修改graspnet-baseline的requirements.txt,…...
黑马商城项目(一)MybatisPlus
一、快速入门 入门案例: 常见注解: 常见配置: 条件构造器(wrapper): 案例: Testvoid testUpdateByWrapper(){List<Long> ids List.of(1L,2L,3L);UpdateWrapper<User> userUpdateWrapper new UpdateWrapp…...
Linux系统编程 day2
系统调用 由操作系统实现并提供给外部应用程序的编程接口(API)。是应用程序同系统之间数据交换的桥梁。 文件IO 函数 open/close函数 头文件 #include<fcntl.h> #include<unistd.h>int open(const char*pathname , int flags) int open(const char*pathname , …...
告别繁琐,拥抱简洁:初识 Pytest 与环境搭建 (Pytest系列之一)
在 Python 自动化测试领域,Pytest以其简洁、灵活和强大的特性,越来越受到广大测试工程师和开发者的青睐。如果你还在为繁琐的测试框架而苦恼,或者希望提升你的 Python 测试效率,那么 Pytest 绝对值得你深入了解和使用。 本文将带…...
浏览器运行Pytorch无法启用显卡
注意 我启用高性能之后,结果蓝屏了。无语Thinkpad T14p!!! 仅供参考。 问题与方案 在浏览器里面用Jupyter编写python程序,进行网络模型训练。 里面导入了PyTorch,但是并没有启用显卡执行: 也…...
天元证券|8家汽车零部件上市公司一季度业绩预喜
近日,中国汽车工业协会发布的数据显示,今年一季度,我国汽车产量为756.1万辆,同比增长14.5%;汽车销量为747万辆,同比增长11.2%。 受益于前三个月汽车产、销量同比双增,上游产业链公司交出了一份可…...
C语言学习之sizeof函数和strlen函数
经过我们之前的学习,已经接触过很多次sizeof函数和strlen函数了,应用他们来求解数组大小等等。但是实际应用中两者的差别还是很大的,接下来我们就来了解一下吧。 sizeof函数 sizeof函数计算的是变量所占内存空间的大小的,单位是字…...