- 博客(96)
- 问答 (1)
- 收藏
- 关注
原创 爬虫实战,Cookie和Session登录模拟,以及代理IP使用详解的内容。
摘要:本文介绍了Python网络爬虫的核心技术与实战案例。首先概述了爬虫6大基础步骤:网页分析、请求构造、数据获取、内容解析和存储。随后详细讲解了静态资源(图片、音频、视频)的抓取方法,包括网易云音乐封面下载、MP3音频获取和MV视频下载。在实战部分,通过百度贴吧数据爬取案例,展示了单页/多页爬取技巧和面向对象封装方法。此外还解析了POST请求参数提交、Cookie/Session登录模拟、代理IP使用等进阶技术,特别强调了代理池的设计思路和高匿代理的应用场景。全文配有具体代码示例和注意事项说明,涵盖从基础
2025-06-01 12:38:00
850
原创 爬虫入门:从基础到实战全攻略
本文系统介绍了网络爬虫的基础知识和实践要点。主要内容包括:爬虫定义与分类(通用爬虫/聚焦爬虫)、基本工作流程(请求-响应-解析-存储)以及Robots协议规范;HTTP/HTTPS通信原理(请求方法、状态码、URL结构等);Python requests模块的使用方法(GET/POST请求、参数传递、响应处理);反爬机制应对策略(代理IP、随机UA、请求间隔等);并通过构建搜索引擎爬虫的实战案例,演示了完整开发流程。最后强调了爬虫开发的法律合规性和最佳实践,包括遵守robots.txt、设置合理请求频率等注
2025-06-01 11:40:10
1592
原创 Python常用模块实用指南
本文介绍了Python中四个常用模块的核心功能及使用方法:1) sys模块负责程序与解释器交互,提供系统编码、路径和版本信息查询;2) time模块处理时间数据,支持时间戳、时间元组和格式化字符串的转换;3) logging模块实现日志记录功能,包含五种级别配置和格式化输出;4) random模块提供随机数生成和序列操作。每个模块均配有典型函数说明和示例代码,并特别标注了如basicConfig()单次生效、randrange()取值规则等使用注意事项。这些模块为Python开发提供了基础的系统交互、时间处
2025-05-28 22:07:46
496
原创 Python os 模块简介及基础使用示例
Python 的os获取系统信息管理文件和目录路径判断文件/目录是否存在获取环境变量等常用于自动化脚本、文件批量处理、路径拼接等场景。
2025-05-27 23:35:01
553
原创 Python正则表达式:30秒精通文本处理
正则表达式是一种强大的文本模式匹配工具,可通过特定语法规则描述字符串结构。本文介绍了正则表达式的基本概念、Python中的使用方法(re模块)以及核心语法元素:1. 单个字符匹配(如\d匹配数字、\w匹配单词字符)2. 量词控制匹配次数(如*、+、?)3. 位置控制符(^匹配开头,$匹配结尾)4. 分组引用和命名分组5. 贪婪/非贪婪匹配模式。还讲解了Python中的re.search()、re.findall()等常用函数,以及推荐使用原始字符串(r"")避免转义问题。通过示例代码演示
2025-05-27 23:01:51
1744
原创 协程:单线程并发开发的高效利器
协程是一种轻量级的用户态多任务调度方式,运行在单个线程中,由开发者控制其执行流程。与线程相比,协程的创建和切换成本更低,适用于I/O密集型任务,如网络请求和文件读写。协程通过协作式调度实现伪并发,在单线程中交替执行多个任务。协程的基本原理包括挂起、恢复和事件循环,可以通过生成器、greenlet和gevent等工具实现。gevent库提供了自动切换的能力,特别适合处理高并发I/O操作。协程在网络爬虫、Web服务器和高并发通信等场景中表现出色,相较于线程,协程在内存消耗和CPU开销方面更具优势。
2025-05-18 17:05:19
987
原创 [python] 揭秘Python多进程:高效并行任务处理
进程是操作系统进行资源分配和调度的基本单位,代表一个正在运行的程序。进程可以处于就绪、执行或等待状态。Python的multiprocessing模块提供了Process类来创建和管理进程,支持多核并行任务执行。通过start()启动进程,is_alive()检查进程状态,join()等待进程结束。进程间通信常用Queue队列实现,但需注意避免阻塞问题。在Windows系统中,使用multiprocessing时需将进程相关代码置于if __name__ == '__main__':保护下,以防止无限递归调
2025-05-17 14:12:11
642
原创 Python多线程实战:提升并发效率的秘诀
在Python开发中,多任务处理是常见需求,如同时下载文件或保持界面响应。Python通过多线程实现并发,线程作为CPU调度的基本单位,共享进程资源,但可能引发资源竞争。通过对比串行和多线程执行任务,多线程能显著减少总耗时。使用threading模块可以创建和管理线程,但需注意线程调度的无序性和资源共享问题。为避免资源竞争,可以使用互斥锁(Lock)来保护共享资源。建议在并发执行任务时使用多线程,控制线程生命周期,确保资源安全访问,并注意多线程的适用场景和限制。
2025-05-16 14:48:23
784
原创 Python生成器:高效处理大数据的秘密武器
生成器是Python中的一种特殊迭代器,通过yield语句实现延迟计算,仅在需要时生成值,而非一次性计算所有数据。生成器自动实现__iter__()和__next__()方法,可直接用于迭代。其主要优势在于高效的内存使用,适用于大数据集、无限序列生成及简化复杂迭代逻辑。与列表推导式不同,生成器表达式延迟执行,每次迭代才生成一个值。生成器函数通过yield暂停和恢复执行,保留函数状态。在处理大数据时,生成器显著减少内存占用,尽管速度略慢于列表,但在内存效率上表现卓越,是大规模数据处理的首选工具。
2025-05-15 21:43:35
989
原创 掌握Python类型转换:int、float、str、eval、list全解析
类型转换是 Python 编程中常见的操作,掌握int()float()str()eval()和list()等函数的使用方法,可以灵活处理不同类型的数据。需要注意的是,eval()函数虽然功能强大,但存在安全风险,应谨慎使用。
2025-05-15 14:34:11
588
原创 Python内存管理:赋值、浅拷贝与深拷贝解析
在Python中,直接赋值操作(如list2 = list1)会导致两个变量共享同一个内存地址,这意味着对list1的修改会直接影响到list2。为了避免这种完全共享资源的情况,可以使用浅拷贝和深拷贝。浅拷贝通过copy.copy()实现,它创建一个新的对象,但只拷贝第一层的数据,嵌套层的数据仍然指向原来的内存地址。深拷贝通过copy.deepcopy()实现,它完全拷贝所有层的数据,新对象与原对象完全不共享内存地址。此外,可变对象(如列表、字典、集合)在修改时内存地址不变,而不可变对象(如数值类型、字符串
2025-05-15 14:25:09
242
原创 [python] Python元组、字典与集合的全面解析
Python中的元组、字典和集合是三种重要的数据结构。元组是不可变序列,使用圆括号定义,支持查询操作但不支持增删改。字典是可变映射类型,使用键值对存储数据,键唯一且不可变,支持增删改查操作。集合是无序且元素唯一的数据结构,使用花括号定义,支持去重、添加、删除及集合运算(如交集、并集)。元组适合存储不变数据,字典适合快速查找,集合常用于去重和集合操作。
2025-05-15 14:16:28
382
原创 [python] 深入解析Python可迭代对象与迭代器
本文详细介绍了Python中的可迭代对象与迭代器的概念及其区别。可迭代对象是指实现了__iter__方法的对象,如字符串、列表等,可以通过for循环遍历。迭代器则是实现了__next__方法的对象,能够逐个返回元素,遍历结束后会引发异常。文章还探讨了如何判断对象是否可迭代,以及for循环的工作原理。此外,通过自定义迭代器的示例,展示了如何实现迭代器协议,并解释了迭代器的生存空间和内存管理机制。最后,文档通过代码示例和可视化图表,帮助读者更好地理解这些概念。
2025-05-15 12:20:59
892
原创 [python]掌握Python文件操作:从基础到高级技巧
Python中的文件操作是编程中的基础任务,主要包括文件的打开、读写和关闭。使用open()函数可以打开文件,并返回文件对象。read()方法用于读取文件内容,而write()方法则用于写入数据。文件操作完成后,应使用close()方法关闭文件以释放资源。文件对象还提供了如name、mode和closed等属性,用于获取文件信息。为了简化文件管理,Python提供了with语句,确保文件在使用后自动关闭。此外,文件可以以不同模式打开,如只读('r')、写入('w')和追加('a')等。文件指针的位置可以通过
2025-05-15 09:46:28
548
原创 [python] python中的魔法方法和属性
Python中的魔法属性和方法为对象提供了特殊的功能。魔法属性如__module__、__class__和__doc__分别表示对象所在的模块、类和描述信息。例如,Sinstance类通过重写__new__方法实现单例模式,其描述信息可通过__doc__属性获取。魔法方法如__str__用于定义对象的字符串表示,__del__在对象删除时调用,__call__使实例对象可像函数一样被调用。例如,enablecall_test类通过定义__call__方法使其实例对象可调用。这些魔法属性和方法增强了Pytho
2025-05-14 23:53:56
401
原创 [python] Python单例模式:__new__与线程安全解析
在Python中,创建类的实例时,首先调用__new__方法分配内存并返回对象引用,随后调用__init__方法进行初始化。如果重写__new__方法,必须返回父类的__new__方法以确保成功分配内存,否则实例化过程会失败。单例模式确保一个类只有一个实例,并提供全局访问点。通过重写__new__方法可以实现单例模式,但在多线程环境下可能引发线程安全问题。为此,可以使用锁机制(如threading.Lock)和双重检查锁定模式来确保线程安全。此外,利用Python模块的导入机制也可以简单且安全地实现单例模式
2025-05-14 23:30:00
1428
原创 [python] python静态方法,类方法,实例方法实现及其区别
在Python中,类的方法分为实例方法、类方法和静态方法。实例方法通过self访问实例属性,类方法通过cls访问类属性,并使用@classmethod装饰器。静态方法使用@staticmethod装饰器,不依赖于实例或类属性,类似于普通函数。静态方法适用于不涉及类或实例状态的操作,例如日期处理工具类DateUtils中的工作日判断和计算。类方法常用于操作类属性或在所有实例间共享数据。实例方法主要用于操作和修改实例的状态。明确区分类属性和实例属性对于正确使用方法至关重要。类属性定义在类中、方法外,而实例属性通
2025-05-14 21:33:13
924
原创 [python] 面向对象三大特性->多态
多态是面向对象编程中的一个重要概念,指的是一个对象在不同环境中以不同形态展示其功能,即同一种行为有不同的表现形式。多态的实现通常依赖于继承和方法重写。在Python中,多态是自然存在的,得益于其动态属性,无需像C++和Java那样显式使用virtual关键字。通过定义一个基类(如Animal)和多个派生类(如Dog和Cat),每个派生类实现自己的make_sound方法,可以实现多态性。调用统一的接口函数(如animal_sound)并传入不同的动物对象时,会根据对象的实际类型执行相应的方法,从而展示多态的
2025-05-14 16:44:41
404
原创 [python] 面向对象的三大特性-继承及新式类
继承是面向对象编程中的一个核心概念,允许子类继承父类的属性和方法,从而避免代码重复并提高复用性。继承可以分为单继承和多继承,子类可以通过重写父类的方法来扩展或修改功能。多层继承则形成类的层次结构,子类可以继承多个层级的属性和方法。方法重写允许子类根据需要自定义父类方法的行为,而新式类在Python 3中默认继承自object类,提供更多内置功能。多继承允许一个类同时继承多个父类,但需注意方法冲突和初始化顺序。通过继承,类之间可以建立层次关系,实现代码的高效复用和扩展。
2025-05-12 23:49:59
936
原创 [python] 类的创建及面向对象的三大特性-封装
具有相同属性和行为的事物的通称,是一个抽象的概念三要素: 类名,属性,方法格式:class 类名:代码块。
2025-05-10 23:46:56
286
原创 [python] 闭包以及装饰器
摘要: 递归函数是一种在函数内部调用自身的函数,必须设置递归出口以避免无限递归。阶乘和斐波那契数列是递归的典型应用,递归的优点是代码简洁,缺点是效率较低。闭包是嵌套函数中内层函数使用外层函数的局部变量,外层函数返回内层函数的函数名。闭包变量被内层函数持续持有和使用,即使外层函数执行完毕也不会被销毁。装饰器是一种函数,可以在不修改原代码的前提下为函数增加额外功能,其返回值也是一个函数对象。
2025-05-10 00:54:23
929
原创 [python] 抛出异常,模块,包管理
文章主要介绍了Python中的异常处理和模块导入的相关知识。首先,通过raise Exception('xxx')可以抛出异常,避免程序终止,并继续运行。接着,文章详细讲解了模块的概念,包括内置模块、第三方模块和自定义模块,并介绍了多种模块导入方式,如import、from...import...、from...import*以及使用as起别名的方法。此外,文章还提到了包的概念,包是包含__init__.py文件的文件夹,用于组织模块,避免命名冲突。最后,文章强调了__all__变量的作用,用于控制模块的导
2025-05-09 16:41:44
1013
原创 [python] 函数1-函数基础
本文介绍了Python函数中的多种参数类型及其使用方式。必备参数要求传递和定义的顺序及个数必须一致;默认参数允许为函数参数提供默认值,若调用时不传递则使用默认值;可变参数允许传入任意数量的参数,以元组形式接收;关键参数以字典形式接收,需采用键=值形式传递。此外,还介绍了函数嵌套、作用域(全局变量和局部变量)、global和nonlocal关键字的使用,以及匿名函数(lambda)的定义和调用方式。这些内容涵盖了Python函数的基本用法和高级特性,帮助开发者灵活处理函数参数和作用域问题。
2025-05-08 23:25:25
461
原创 【SQL】SQL事务
当我们发现第一条sql执行失败了,我们不能进行commit提交,而是应该使用rollbak进士回滚,让数据恢复到之前的状态。update account set money = money + 1000 where name = '李四';update account set money = money - 1000 where nam = '张三';:如果再第三步出现了异常,这就导致张三银行卡里的钱被扣掉了,但是李四银行卡里的前并没有增加。这一组操作就必须在一个事务的范围内,要么都成功,要么都失败。
2025-02-22 14:05:46
883
原创 【SQL】SQL多表查询
一对一关系,多用于单表拆分,将一张表的基础字段放在一张表中,其他详情字段放在另一张表中,以提升操作效率。建立第三张中间表,中间表至少包含两个外键,分别关联两方主键,使用。在任意一方加入外键,关联另外一方的主键,并且设置外键为唯一的。一个学生可以选修多门课程,一门课程也可以供多个学生选择。4. 增加唯一约束,保证外键创建成功。来维护二者之间的关联关系。用户 与 用户详情的关系。
2025-02-18 11:19:48
1091
原创 【SQL】SQL约束
📢一旦为某个表建立了外键关联之后,我们再去删除被关联的父表的记录,如果发现当前父表的这条数据在子表中存在关联关系就不允许删除,这样就保证了数据的一致性和完整性。
2025-02-17 23:11:12
1030
5
原创 【SQL】SQL用户管理和权限
撤销'remote'@'%' 用户的test数据库的所有权限。可以在任意主机访问该数据库, 密码remote;用来管理数据库用户、控制数据库的访 问权限。修改用户remote的访问密码为1234;删除itcast@localhost。仅代表只能够在当前本机访问,是不可以。授予'remote'@'%' 用户。代表的是访问该数据库的用户名。多个权限之间,使用逗号分隔。数据库所有表的所有操作权限。创建用户remote,代表当前用户访问的主机。, 密码itcast;
2024-10-21 16:16:39
1432
原创 【SQL】SQL查询语句
⭐ DQL-介绍。DQL英文全称是Data Query Language(数据查询语言)。用来查询数据库中表的记录同样DQL语言也是数据库中操作最频繁,最重要的语言。
2024-10-12 14:52:09
1002
原创 [SQL] 数据库图形化安装和使用
一 安装1.1图形化安装下载DataGrip安装包 点击此处 一直下一步即可。 点击免费使用。进去界面后,选择新建一个项目点击加号,创建一个Mysql连接。 输入Mysql的连接信息。 点击DownLoad下载Mysql的驱动接下来点击创建的mysq项目中后面的三个点,选择要显示的哪些数据库 选择完成后点击刷新,这样就会显示出所需要显示的数据库了。二 创建数据库和表2.1 创建数据库右键点击创建的Mysql项目->New->Schem
2024-10-11 16:03:34
442
原创 [SQL] SQL语句注意事项
数据定义语言: 用来定义数据库对象(数据库,表,字段)数据操作语言:用来对数据库表中的数据进行增删改数据查询语言: 用来查询数据库中表的记录数据控制语言: 用来创建数据库用户、控制数据库的访问权限。
2024-10-04 19:48:15
758
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅