白话机器学习
10年IT从业经验,人工智能高级算法工程师、CSDN博客专家、阿里云专家、《2023博客之星马龄赛道11-15年》吉林第一名、《2023博客之星,城市赛道》长春TOP1
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Python一行代码能做什么,30个实用案例代码详解
Python语法简洁,能够用一行代码实现很多有趣的功能,这次来整理30个常见的Python一行代码集合。1、转置矩阵2、二进制转十进制103、字符串大写转小写。原创 2024-02-20 16:47:12 · 214 阅读 · 1 评论 -
分享常用的20个python小技巧(建议收藏)
1.1 有放回随机采样和无放回随机采样import randomrandom.choices(seq, k=1) # 长度为k的list,有放回采样random.sample(seq, k) # 长度为k的list,无放回采样1.2 lambda 函数的参数func = lambda y: x + y # x的值在函数运行时被绑定func = lambda y, x=x: x + y # x的值在函数定义时被绑定1.3 copy 和 deepcopyimport原创 2024-02-20 16:44:29 · 217 阅读 · 0 评论 -
总结15个基本且常用Pandas代码(建议收藏学习)
Pandas提供了强大的数据操作和分析功能,是数据科学的日常基本工具。在本文中,我们将介绍最常用的15个Pandas代码片段。这些片段将帮助简化数据分析任务,从数据集中提取有价值的见解。1、过滤数据Pandas提供了多种方法来过滤数据。原创 2024-02-19 16:23:16 · 362 阅读 · 5 评论 -
一文彻底搞懂python的进程与线程问题
单核下多线程,每次释放GIL,唤醒的那个线程都能获取到GIL锁,所以能够无缝执行,但多核下,CPU0释放GIL后,其他CPU上的线程都会进行竞争,但GIL可能会马上又被CPU0拿到,导致其他几个CPU上被唤醒后的线程会醒着等待到切换时间后又进入待调度状态,这样会造成线程颠簸(thrashing),导致效率更低。普通的函数,调用一次,返回一次,但是fork()调用一次,返回两次,因为操作系统自动把当前进程(父进程)复制了一份(子进程),然后,分别在父进程和子进程内返回。线程是程序中一个单一的顺序控制流程。原创 2024-02-18 19:03:27 · 283 阅读 · 1 评论 -
如何使用python处理文件压缩和解压缩问题
在日常工作中,除了会涉及到使用Python处理文本文件,有时候还会涉及对压缩文件的处理。通常会涉及到的压缩文件格式有:rar:Windows 环境下用的比较多的压缩,比较著名的GUI工具是winrartar: Linux系统下的打包工具,只打包,不压缩gz:即gzip,通常只能压缩一个文件。与tar结合起来就可以实现先打包,再压缩。tgz:即gz。先用tar打包,然后再用gz压缩得到的文件。原创 2024-02-18 19:00:27 · 243 阅读 · 0 评论 -
Python 文件IO技巧大全,建议收藏
python进行文件操作,在日常编程中是很常用的。为了方便大家,这里对各种文件操作的知识进行汇总。一、文件的打开和关闭open()函数f1 = open(r’d:\测试文件.txt’, mode=‘r’, encoding=‘utf-8’)content = f1.read()print(content)f1.close()with open(r’d:\测试文件.txt’, mode=‘r’, encoding=‘utf-8’) as f1:content = f1.read()print原创 2024-02-14 10:01:28 · 461 阅读 · 2 评论 -
如何用6个内存优化小技巧快速提升你的python运行效率
如果我们只需要一个简单的一维数字数组,而不需要NumPy提供的广泛功能,那么Python的内置数组是一个不错的选择。但当涉及到复杂的矩阵操作时,使用NumPy提供的数组是所有数据科学家的首选,也可能是最佳选择。Python中的数组要求元素具有相同的数据类型(例如,所有整数或所有浮点数),但列表可以存储不同类型的对象,这不可避免地需要更多的内存。简单地说,当使用mmap技术对文件进行内存映射时,它直接在当前进程的虚拟内存空间中创建文件的映射,而不是将整个文件加载到内存中,这节省了大量内存。原创 2024-02-14 09:59:11 · 166 阅读 · 0 评论 -
Pandas50个高级操作,大神都在用,建议收藏
在数据分析和数据建模的过程中需要对数据进行清洗和整理等工作,有时需要对数据增删字段。下面为大家介绍Pandas对数据的复杂查询、数据类型转换、数据排序、数据的修改、数据迭代以及函数的使用。01、复杂查询实际业务需求往往需要按照一定的条件甚至复杂的组合条件来查询数据,接下来为大家介绍如何发挥Pandas数据筛选的无限可能,随心所欲地取用数据。1、逻辑运算2、逻辑筛选数据切片([ ])、.loc[ ]和.iloc[ ]均支持上文所介绍的逻辑表达式。3、函数筛选4、比较函数5、查询df.query()原创 2024-01-12 14:49:44 · 402 阅读 · 2 评论 -
分享一个Python exe文件打包神器-Nuitka,以后python程序运行更方便啦
对于第三方依赖包较多的项目(比如需要import torch,tensorflow,cv2,numpy,pandas,geopy等等)而言,这里最好打包的方式是只将属于自己的代码转成C++,不管这些大型的第三方包!–windows-icon-from-ico=./logo.ico:指定生成的exe的图标为logo.ico这个图标,这里推荐一个将图片转成ico格式文件的网站(比特虫)。└─demo.exe//生成的exe文件├─logo.ico//demo的图标└─demo.py//main文件。原创 2024-01-12 14:40:33 · 289 阅读 · 0 评论 -
10 个 Python 脚本来自动化你的日常任务
想想这些你不再需要一次又一次地做的无聊的事情,让它自动化,让你的生活更轻松。那么在本文中,我将向您介绍 10 个 Python 自动化脚本,以使你的工作更加自动化,生活更加轻松。你可能使用 CPU-Z 或任何规格监控软件来捕获你的 Cpu 和 Gpu 温度,但你也可以通过编程方式进行。使用此自动化脚本为你的视频添加水印,该脚本使用 Moviepy,这是一个方便的视频编辑模块。厌倦了手动将您的 PDF 书籍转换为有声读物,那么这是你的自动化脚本,它使用 GTTS 模块将你的 PDF 文本转换为音频。原创 2024-01-11 22:46:47 · 272 阅读 · 3 评论 -
25个例子学会Pandas Groupby 操作
它用于根据给定列中的不同值对数据点(即行)进行分组,分组后的数据可以计算生成组的聚合值。在本文中,我们将使用25个示例来详细介绍groupby函数的用法。如果groupby操作的输出是DataFrame,可以使用as_index参数使它们成为DataFrame中的一列。如果我们有一个包含汽车品牌和价格信息的数据集,那么可以使用groupby功能来计算每个品牌的平均价格。由于行是根据上个月的销售值排序的,所以我们将获得上个月销售额排名第五的行。这里使用的数据集是随机生成的,我们把它当作一个销售的数据集。原创 2024-01-08 20:47:40 · 1220 阅读 · 1 评论 -
Pandas处理大数据的性能优化技巧
但是随着数据大小的增加,执行某些操作的某些方法会比其他方法花费更长的时间。如果要对分类特征进行很多过滤操作,例如在本例中,如果我们从头进行分组,并且只看get_group部分的执行时间,我们将看到该过程实际上比常规方法更快。在使用CSV进行的操作中,首先建议使用datatable库将pandas转换为datatable对象,并在该对象上执行读写操作这样可以得到更快的结果。我们根据特征的数值范围对其进行相应的转换,例如AGE特征的范围在0到99之间,可以将其数据类型转换为int8。原创 2024-01-08 20:40:56 · 1712 阅读 · 1 评论 -
详细总结,10个简单好用的python装饰器,建议收藏
装饰器(Decorators)是Python中一种强大而灵活的功能,用于修改或增强函数或类的行为。装饰器本质上是一个函数,它接受另一个函数或类作为参数,并返回一个新的函数或类。装饰器是Python中一个非常强大和常用的特性,它可以用于许多不同的情况,例如缓存、日志记录、权限控制等。通过在项目中使用的我们介绍的这些Python装饰器,可以简化我们的开发流程或者让我们的代码更加健壮。装饰器的语法使用@符号,将装饰器应用于目标函数或类。将@timer与其他装饰器结合使用,可以全面地分析代码的性能。原创 2024-01-07 20:38:14 · 836 阅读 · 3 评论 -
100天玩转python——day99-100 项目部署上线和性能调优
此外,在配置upstream模块时可以指定服务器的状态值,包括:backup(备份机器,其他服务器不可用时才将请求分配到该机器)、down、fail_timeout(请求失败达到max_fails后的暂停服务时间)、max_fails(允许请求失败的次数)和weight(轮询的权重)。如果我们能够在Docker中完成项目的部署,并且将整个部署好的容器打包成镜像文件进行分发和安装,这样就可以解决项目在多个节点上进行部署时可能遇到的麻烦,而且整个部署可以在很短的时间内完成。上面创建创建容器时使用的。原创 2023-07-18 15:59:39 · 268 阅读 · 1 评论 -
100天玩转python——day97-98 电商网站技术要点剖析
"intro": "一直以来,Apple都心存一个设想,期待能够打造出这样一部iPhone:它有整面屏幕,能让你在使用时,完全沉浸其中,仿佛忘了它的存在。现在,就跟未来见个面吧。"intro": "一直以来,Apple都心存一个设想,期待能够打造出这样一部iPhone:它有整面屏幕,能让你在使用时,完全沉浸其中,仿佛忘了它的存在。现在,就跟未来见个面吧。"intro": "一直以来,Apple都心存一个设想,期待能够打造出这样一部iPhone:它有整面屏幕,能让你在使用时,完全沉浸其中,仿佛忘了它的存在。原创 2023-07-18 15:56:32 · 293 阅读 · 0 评论 -
100天玩转python——day96 python软件测试和自动化测试
软件测试是一种用来促进鉴定软件的正确性、完整性、安全性和品质的过程,也就是在规定的条件下对程序进行操作以发现程序中的错误,衡量软件的品质并对其是否能满足设计要求进行评估的过程。原创 2023-07-18 15:54:00 · 146 阅读 · 0 评论 -
100天玩转python——day92-95 基于Django的完整商业项目实战,从设计到实现
问题1:描述一个Web应用的工作流程。 问题2:描述项目的物理架构。(上图中补充负载均衡(反向代理)服务器、数据库服务器、文件服务器、邮件服务器、缓存服务器、防火墙等,而且每个节点都有可能是多节点构成的集群。当然,架构都是根据业务的需要一步步演进而不是一蹴而就的。)问题3:描述Django项目的工作流程。(如下图所示) 问题1:为什么要使用MVC架构模式?(模型和视图解耦合)问题2:MVC架构中每个部分的作用?(如下图所示) 对象的属性和方法: - 获取请求方法 / - 获取请求路径/带查询字符串的路原创 2023-07-18 15:52:03 · 356 阅读 · 0 评论 -
100天玩转python——day91 网络API接口开发于设计
如果API接口的设计是根据用户的操作或者界面上的功能设置来设计,随着需求的变更,用户界面也会进行调整,需要的数据也在发生变化,那么后端开发者就要不停的调整API,或者给一个API设计出多个版本,这些都会使项目的开发和维护成本增加。API是应用程序的编程接口的缩写,网络API通常指的是基于一个URL(统一资源定位符)可以访问到的资源,也就是说通过这个URL我们就可以请求服务器对某个资源进行操作并返回操作的结果。,当然这两篇文章大家也要批判的阅读,因为上面阐述的观点并不完全正确,有些内容甚至是自相矛盾的。原创 2023-07-18 15:46:40 · 448 阅读 · 0 评论 -
100天玩转python——day88-90 MySQL性能优化详解
数据表设计的规范程度称之为范式(Normal Form),要提升表的规范程度通常需要将大表拆分为更小的表,范式级别越高数据冗余越小,而且在插入、删除、更新数据时出问题的可能性会大幅度降低,但是节省了空间就意味着查询数据时可能花费更多的时间,原来的单表查询可能会变成连表查询。一种常见的优化思路是在索引上完成排序和分页的操作,然后根据返回的结果做表连接操作来得到最终的结果,这样可以避免出现全表查询,也避免了外部排序。大事务:运行步骤较多,涉及的表和字段较多,容易造成资源的争抢,甚至形成死锁。原创 2023-07-18 15:44:32 · 148 阅读 · 0 评论 -
100天玩转python——day85-87 Docker容器技术万字详解
软件开发中最为麻烦的事情可能就是配置环境了。由于用户使用的操作系统具有多样性,即便使用跨平台的开发语言(如Java和Python)都不能保证代码能够在各种平台下都可以正常的运转,而且在不同的环境下我们安装的软件需要依赖的软件包也是不一样的。那么问题来了,我们安装软件的时候可不可以把软件运行的环境一并安装?我们是不是可以把原始环境一模一样地复制过来呢?原创 2023-07-18 15:42:53 · 258 阅读 · 0 评论 -
100天玩转python——day80-84 团队开发必备工具,开源版本控制系统Git
Git是诞生于2005年的一个开源分布式版本控制系统,最初是Linus Torvalds(Linux之父) 为了帮助管理Linux内核开发而开发的一个版本控制软件。Git与常用的版本控制工具Subversion等不同,它采用了分布式版本控制的方式,在没有中央服务器支持的环境下也能够实施版本控制。原创 2023-07-18 15:40:23 · 270 阅读 · 0 评论 -
100天玩转python——day79 方差分析和参数估计
在实际生产环境中,可能无法获得所有的数据,或者即便获取了所有的数据,但是没有足够的资源来分析所有的数据,在这种情况下,我们都需要用非常小量的样本特征去评估总体数据的特征,这其中的一项工作就是参数估计。当 F > F crit,这几组之间的差异超过判断基准了,认为不同优惠金额的分组间的购买率是不一样的,优惠金额这个因素会对购买率产生影响,也就是说通过运营优惠金额这个抓手,是可以提升用户购买转化率的;如下图所示,对于上面蓝色和绿色分组的“组内方差”,显然蓝色的组内方差更大,绿色的组内方差更小。原创 2023-07-17 10:34:14 · 162 阅读 · 0 评论 -
100天玩转python——day78 相关性和回归
如果只有一个自变量 X,而且因变量 Y 和自变量 X 之间的数量变化关系呈现近似的线性关系,就可以建立一元线性回归方程,通过自变量 X 的值来预测因变量 Y 的值,这就是所谓的。当 \rho 的值在 [0,0.1) 之间,认为指标间是无相关,指标间的业务联系无任何联系,也就是说当我们去运营指标 A 时,指标 B 不会产生相应的变化。留存的运营中我们最常看的就是新客的留存和活跃客群的留存,用来评估哪个客群的留存与整体的留存联系更紧密,以便制定后续运营的策略。原创 2023-07-17 10:32:17 · 142 阅读 · 0 评论 -
100天玩转python——day77 概率基础
描述性统计通常用于研究表象,将现象用数据的方式描述出来(用整体的数据来描述整体的特征);推理性统计通常用于推测本质(通过样本数据特征去推理总体数据特征),也就是你看到的表象的东西有多大概率符合你对隐藏在表象后的本质的猜测。原创 2023-07-17 10:28:10 · 252 阅读 · 0 评论 -
100天玩转python——day76 Pandas的应用-5
如果变量 $X$ 的较大值主要与另一个变量 $Y$ 的较大值相对应,而两者较小值也相对应,那么两个变量倾向于表现出相似的行为,协方差为正。斯皮尔曼相关系数对数据条件的要求没有皮尔逊相关系数严格,只要两个变量的观测值是成对的等级评定资料,或者是由连续变量观测资料转化得到的等级资料,不论两个变量的总体分布形态、样本容量的大小如何,都可以用斯皮尔曼等级相关系数来进行研究。在统计学中,皮尔逊积矩相关系数就是正态形式的协方差,它用于度量两个变量 $X$ 和 $Y$ 之间的相关程度(线性相关),其值介于。原创 2023-07-17 10:22:30 · 229 阅读 · 0 评论 -
100天玩转python——day75 Pandas的应用-4
如果大家有使用 Excel 的经验,相信对透视表这个概念一定不会陌生。例如,我们要“统计每个销售区域的销售总额”,那么“销售区域”就是我们的 A 列,而“销售额”就是我们的 B 列,在。上面的例子中,“统计每个销售区域每个月的销售总额”会产生一个看起来很长的结果,在实际工作中我们通常把那些行很多列很少的表成为“窄表”,如果我们不想得到这样的一个“窄表”,可以使用。一图胜千言,我们对数据进行透视的结果,最终要通过图表的方式呈现出来,因为图表具有极强的表现力,能够让我们迅速的解读数据中隐藏的价值。原创 2023-07-17 10:21:11 · 154 阅读 · 0 评论 -
100天玩转python——day74 Pandas的应用-3
异常值是指样本中出现的“极端值”,数据值看起来异常大或异常小,其分布明显偏离其余的观测值。实际工作中,有些异常值可能是由系统或人为原因造成的,但有些异常值却不是,它们能够重复且稳定的出现,属于正常的极端值,例如很多游戏产品中头部玩家的数据往往都是离群的极端值。我们先来看看数据的拆解。:填充的值如何选择也是一个值得探讨的话题,实际工作中,可能会使用某种统计量(如:均值、众数等)进行填充,或者使用某种插值法(如:随机插值法、拉格朗日插值法等)进行填充,甚至有可能通过回归模型、贝叶斯模型等对缺失数据进行填充。原创 2023-07-17 10:20:07 · 135 阅读 · 0 评论 -
100天玩转python——day73 Pandas的应用-2
先使用`reset_index`方法重新设置`all_emp_df`的索引,这样`eno` 不再是索引而是一个普通列,`reset_index`方法的`inplace`参数设置为`True`表示,重置索引的操作直接在`all_emp_df`上执行,而不是返回修改后的新对象。员工表(`emp_df`),其中`eno`是员工编号,`ename`、`job`、`mgr`、`sal`、`comm`和`dno`分别代表员工的姓名、职位、主管编号、月薪、补贴和部门编号。原创 2023-07-17 10:18:23 · 168 阅读 · 0 评论 -
100天玩转python——day72 Pandas的应用-1
Pandas是Wes McKinney在2008年开发的一个强大的分析结构化数据的工具集。Pandas以NumPy为基础(数据表示和运算),提供了用于数据处理的函数和方法,对数据分析和数据挖掘提供了很好的支持;同时Pandas还可以跟数据可视化工具Matplotlib很好的整合在一起,非常轻松愉快的实现数据的可视化展示。Pandas核心的数据类型是Series(数据系列)、DataFrame(数据表/数据框),分别用于处理一维和二维的数据,除此之外还有一个名为Index的类型及其子类型,它为Series原创 2023-07-16 21:15:27 · 138 阅读 · 0 评论 -
100天玩转python——day71 NumPy的应用-2
属性对应的元组中最后一个元素的值(从后往前数最后一个维度的值),例如,我们之前打开的图像对应的数组后缘维度为3,3行4列的二维数组后缘维度为4,而有5个元素的一维数组后缘维度为5。模块中有一组标准的矩阵分解运算以及诸如求逆和行列式之类的函数,它们跟 MATLAB 和 R 等语言所使用的是相同的行业标准线性代数库,下面的表格列出了。上面的例子中,两个二元运算的数组形状是完全相同的,我们再来研究一下,两个形状不同的数组是否可以直接做二元运算或使用二元函数进行运算,请看下面的例子。中的数据执行元素级运算的函数。原创 2023-07-16 21:08:56 · 148 阅读 · 0 评论 -
100天玩转python——day70 NumPy的应用-1
切片操作虽然创建了新的数组对象,但是新数组和原数组共享了数组中的数据,简单的说,如果通过新数组对象或原数组对象修改数组中的数据,其实修改的是同一块数据。花式索引和布尔索引也会创建新的数组对象,而且新数组复制了原数组的元素,新数组和原数组并不是共享数据的关系,这一点通过前面讲的数组的。,对于同样的数值计算任务,使用 NumPy 不仅代码要简洁的多,而且 NumPy 的性能远远优于原生 Python,基本是一个到两个数量级的差距,而且数据量越大,NumPy 的优势就越明显。通过上面的代码可以发现,原创 2023-07-16 21:06:44 · 155 阅读 · 0 评论 -
100天玩转python——day69 python数据分析概述及环境搭建
当今世界对信息技术的依赖程度在不断加深,每天都会有大量的数据产生,我们经常会感到数据越来越多,但是要从中发现有价值的信息却越来越难。这里所说的信息,可以理解为对数据集处理之后的结果,是从数据集中提炼出的可用于其他场合的结论性的东西,而从原始数据中抽取出有价值的信息的这个过程我们就称之为数据分析,它是数据科学工作的一部分。原创 2023-07-16 21:05:05 · 406 阅读 · 0 评论 -
100天玩转python——day68 爬虫框架Scrapy简介
当你写了很多个爬虫程序之后,你会发现每次写爬虫程序时,都需要将页面获取、页面解析、爬虫调度、异常处理、反爬应对这些代码从头至尾实现一遍,这里面有很多工作其实都是简单乏味的重复劳动。那么,有没有什么办法可以提升我们编写爬虫代码的效率呢?答案是肯定的,那就是利用爬虫框架,而在所有的爬虫框架中,Scrapy 应该是最流行、最强大的框架。Scrapy 是基于 Python 的一个非常流行的网络爬虫框架,可以用来抓取 Web 站点并从页面中提取结构化的数据。原创 2023-07-16 21:03:00 · 1433 阅读 · 0 评论 -
100天玩转python——day67 使用Selenium抓取网页动态内容
Selenium 是一个自动化测试工具,利用它可以驱动浏览器执行特定的行为,最终帮助爬虫开发者获取到网页的动态内容。简单的说,只要我们在浏览器窗口中能够看到的内容,都可以使用 Selenium 获取到,对于那些使用了 JavaScript 动态渲染技术的网站,Selenium 会是一个重要的选择。下面,我们还是以 Chrome 浏览器为例,来讲解 Selenium 的用法,大家需要先安装 Chrome 浏览器并下载它的驱动。Chrome 浏览器的驱动程序可以在ChromeDriver官网。原创 2023-07-16 21:01:04 · 1491 阅读 · 0 评论 -
100天玩转python——day66 python并发编程在爬虫中的应用
通过上面三段代码执行结果的比较,我们可以得出一个结论,使用多线程和异步 I/O 都可以改善爬虫程序的性能,因为我们不用将时间浪费在因 I/O 操作造成的等待和阻塞上,而time命令的执行结果也告诉我们,单线程的代码 CPU 利用率仅仅只有12%,而多线程版本的 CPU 利用率则高达95%;单线程版本的爬虫执行时间约21秒,而多线程和异步 I/O 的版本仅执行了3秒钟。原创 2023-07-16 20:58:56 · 229 阅读 · 0 评论 -
100天玩转python——day65 python中的并发编程之阻塞、异步、同步
通过前面的课程,我们已经知道了可以通过多线程的方式为爬虫提速,使用多线程的本质就是,当一个线程阻塞的时候,程序还有其他的线程可以继续运转,因此整个程序就不会在阻塞和等待中浪费了大量的时间。前面我们说过,异步编程是一种“协作式并发”,即通过多个子程序相互协作的方式提升 CPU 的利用率,从而减少程序在阻塞和等待中浪费的时间,最终达到并发的效果。,看看不使用异步 I/O 也不使用多线程,到底和上面的代码有什么区别,相信通过这样的对比,大家能够更深刻的理解我们之前强调的几个概念:同步和异步,阻塞和非阻塞。原创 2023-07-16 20:56:58 · 287 阅读 · 0 评论 -
100天玩转python——day64 python中的并发编程之多进程和多线程比较
在 Python 中,我们还可以通过subprocess模块的call函数执行其他的命令来创建子进程,相当于就是在我们的程序中调用其他程序,这里我们暂不探讨这些知识,有兴趣的读者可以自行研究。对于Python开发者来说,以下情况需要考虑使用多线程:程序需要维护许多共享的状态(尤其是可变状态),Python 中的列表、字典、集合都是线程安全的(多个线程同时操作同一个列表、字典或集合,不会引发错误和数据问题),所以使用线程而不是进程维护共享状态的代价相对较小。原创 2023-07-16 20:47:57 · 246 阅读 · 0 评论 -
100天玩转python——day63 python中的并发编程之线程和进程
除了上面的代码展示的创建线程的方式外,还可以通过继承Thread类并重写run()方法的方式来自定义线程,具体的代码如下所示。print(f'开始下载 {self.filename}.')print(f'{self.filename} 下载完成.')print(f'下载耗时: {end - start:.3f}秒.')DownloadThread('Python从入门到住院.pdf'),DownloadThread('MySQL从删库到跑路.avi'),原创 2023-07-14 09:22:59 · 255 阅读 · 0 评论 -
100天玩转python——day61-62 python解析HTML网页内容
下面我们对三种解析方式做一个简单比较。解析方式对应的模块速度使用难度正则表达式解析re快困难XPath 解析lxml快一般CSS 选择器解析bs4或pyquery不确定简单。原创 2023-07-14 09:18:56 · 431 阅读 · 0 评论 -
100天玩转python——day58-60 基于python采集网络数据
Python 语言能做的事情真的很多,就网络数据采集这一项而言,Python 几乎是一枝独秀的,大量的企业和个人都在使用 Python 从网络上获取自己需要的数据,这可能也是你将来日常工作的一部分。另外,用编写正则表达式的方式从网页中提取内容虽然可行,但是写出一个能够满足需求的正则表达式本身也不是件容易的事情,这一点对于新手来说尤为明显。在下一节课中,我们将会为大家介绍另外两种从页面中提取数据的方法,虽然从性能上来讲,它们可能不如正则表达式,但是却降低了编码的复杂性,相信大家会喜欢上它们的。原创 2023-07-14 09:17:08 · 893 阅读 · 0 评论
分享