python
文章平均质量分 73
本专栏主要讲一些python的相关知识及技术学习
冰履踏青云
热爱开发,拥抱开源,立志成为一名优秀的开发架构师,现在致力于学习python语言开发(web,爬虫,数据分析,人工智能等),希望在此留下足迹,未来有一天回首能够清晰的看到自己走过的路,一路走来 初心不改,勤能补拙,持续精进。
展开
-
爬虫部署平台crawlab使用说明
crawlab 使用简介原创 2024-04-02 11:53:36 · 2330 阅读 · 3 评论 -
Python 正则匹配带关键字的域名
如果你想使用正则表达式匹配带有特定关键字的域名,你可以编写一个适当的正则表达式模式。用于匹配包含 “example” 关键字的域名。你可以根据需要修改模式来匹配不同的关键字或域名模式。这里的正则表达式模式。原创 2023-10-19 12:59:18 · 180 阅读 · 0 评论 -
python 将pdf文件转图片
python 将pdf文件转图片原创 2023-07-27 17:43:13 · 1317 阅读 · 0 评论 -
B站w_rid逆向
B站w_rid参数逆向原创 2023-05-24 11:14:35 · 2181 阅读 · 19 评论 -
python生成随机干扰验证码
python生成随机验证码原创 2023-04-18 14:46:07 · 170 阅读 · 0 评论 -
某宝sign逆向(以商品评论采集为例)
主要介绍某宝sign值生成原创 2022-10-25 20:24:39 · 916 阅读 · 1 评论 -
JS逆向之TouTiao signature
主要介绍toutiao signature算法逆向还原原创 2022-09-07 18:15:44 · 905 阅读 · 0 评论 -
基于selenium和autoit 实现B站视频自动上传功能
主要介绍自动化实现B站视频上传功能原创 2022-08-23 19:44:07 · 1660 阅读 · 2 评论 -
JS逆向之艺恩数据
本文主要讲解艺恩网站数据加密js逆向过程原创 2022-06-04 03:30:03 · 3793 阅读 · 1 评论 -
Python并发编程相关及在爬虫实战中的使用
文章目录1. 进程和线程1.1 多线程1.2 多进程1.3 GIL锁2. 多线程开发3. 线程安全4. 线程锁5.死锁6.线程池7.单例模式(扩展)总结作业网络编程,了解网络相关的知识点并且要知道几乎所有网络的通信本质上都是通过socket模块实现。例如:网站、网络爬虫。并发编程,提升代码执行的效率。原来代码执行需要20分钟,学习并发编程后可以加快到1分钟执行完毕。1. 进程和线程先来了解下进程和线程。类比:一个工厂,至少有一个车间,一个车间中至少有一个工人,最终是工人在工作。一个程序原创 2022-05-02 01:25:31 · 1498 阅读 · 0 评论 -
Python单例模式性能提升
我们大多数人刚开始学习的时候,单例模式都用的网上千篇一律的代码,实际上在开发过程中是存在一些问题的,本文主要介绍如何避免多线程单例的bug。原创 2022-04-02 13:24:34 · 724 阅读 · 0 评论 -
Python实现文字合成音频文件
Python技术哪家强?从此我是段子王!1. 创建应用2. 测试语音合成是否可用3. 工具人的觉悟——调个包,造个轮儿?4. 找段子素材合成音频(百度AI版本)5. 整个简单的——pyttsx3版本我将月亮缝入躯体,葬自我于山谷,如果那一天野花疯长,那便是我在讲最近正好有朋友找我问能不能把他的面试题文字转成音频文件,这还不简单?python除了不能生孩子,啥不能干?我也就有这个想法试着鼓捣了一下,用网上的段子合成语音文件。我们这里就用百度AI平台做演示,主要还是因为百度AI平台有很多好玩的高级的功能可原创 2022-03-11 20:46:12 · 5233 阅读 · 2 评论 -
数据分析之Numpy模块详解
文章目录1. Numpy数组和Python列表性能对比1. Numpy数组和Python列表性能对比原创 2021-12-29 00:41:34 · 1923 阅读 · 4 评论 -
web自动化测试基础知识整合(一)
文章目录1. 精准截取验证码图片1. 精准截取验证码图片import timefrom PIL import Imagefrom selenium import webdriverfrom selenium.webdriver.support.wait import WebDriverWaitfrom selenium.webdriver.common.by import Bydriver = webdriver.Chrome()driver.get("http://www.5itest原创 2021-12-04 23:13:48 · 5214 阅读 · 0 评论 -
滑块验证码处理
文章目录1. 进入网站,判断是否成功加载2. 点击嵌入式,使网页向下滚动3. 获取网页源代码,用正则取出验证码背景和验证码滑块图片的链接并保存到本地4.最最重要的一部分——识别图片滑块缺口位置,计算移动距离5. 规划移动轨迹目前只找到用selenium自动化模拟人的行为过滑块验证的解决方案,selenium并不是python的专属,我查了一下java也有,参考使用java + selenium + OpenCV破解网易易盾滑动验证码查了很多博客代码大多都失效了(我没有找到一个可以用的),下面是我自己原创 2021-12-04 00:08:41 · 4550 阅读 · 3 评论 -
scrapy自定义中间件实现局部延时
在写一个网站多个接口的时候,有时候某个接口会限制时间,比如3秒内只能发送一次请求否则会报环境存在风险或者封ip,这个时候如果还在settings里设置DOWNLOAD_DELAY=3,这样全局延时就会耽误其他接口的请求速度,尤其是遇到需求实时性比较强的就会拖后腿,这时候就可以自定义局部延时中间件控制,使用如下:中间件class DelayedRequestsMiddleware(object): def process_request(self, request, spider):原创 2021-11-30 15:44:44 · 1432 阅读 · 0 评论 -
scrapy一个项目中多个spider,同时并发执行
一个项目中多个spider、item、pipeline的使用运行多个爬虫定义程序,集中启动在项目路径下创建crawl.py文件,内容如下:from scrapy.crawler import CrawlerProcessfrom scrapy.utils.project import get_project_settingsprocess = CrawlerProcess(get_project_settings())# myspd1是爬虫名process.crawl('mys.原创 2021-10-02 13:39:31 · 2628 阅读 · 0 评论 -
scrapy定时任务爬虫报错:twisted.internet.error.ReactorNotRestartable
import scrapyfrom scrapy.crawler import CrawlerProcessfrom scrapy.utils.project import get_project_settingsfrom twisted.internet import reactorfrom twisted.internet.task import deferLaterdef sleep(self, *args, seconds): """Non blocking sleep cal.原创 2021-10-02 13:31:13 · 2904 阅读 · 0 评论 -
移动端商城开发(一)
文章目录1.工程环境搭建1.1 创建虚拟环境本项目是基于Linux平台开发的,下面从最基本的环境搭建开始讲起,我这是用的ubuntu16做的。1.工程环境搭建1.1 创建虚拟环境sudo pip3 install virtualenvsudo pip3 install virtualenvwrapper我在安装virtualenvwrapper时出现了问题:ImportError: module 'setuptools.dist' has no attribute 'check_specif原创 2021-06-27 00:26:55 · 2511 阅读 · 2 评论 -
python实现简单的验证码识别
文章目录1. 环境准备1.1 安装pillow 和 pytesseract1.2 安装Tesseract-OCR.exe1.3 更改pytesseract.py的ocr路径2. 测试识别效果3. 实战案例--实现古诗文网验证码自动识别登录1. 环境准备1.1 安装pillow 和 pytesseractpython模块库需要 pillow 和 pytesseract 这两个库,直接pip install 安装就好了。pip install pillowpip install pytesseract原创 2021-06-14 10:38:50 · 3942 阅读 · 7 评论 -
python基础面试题(六)
文章目录1.hasattr(object, name)函数2.getattr(object, name) 函数3.setattr(object,name,values)函数4. 简述多线程、多进程5. 简述any()和all()方法6. python中copy和deepcopy区别7. 说说python中装饰器、迭代器的用法;描述下dict的items()方法与iteritems()方法的不同8. 如何判断一个值是函数还是方法9. 输入日期, 判断这一天是这一年的第几天?10. 将字符串 "k:1 |k1:原创 2021-01-10 22:32:27 · 1077 阅读 · 2 评论 -
python基础面试题(五)
文章目录1.以下代码输出是什么,请给出答案并解释2. 提高python运行效率的方法3.有一个数据结构如下所示,请编写⼀个函数从该结构数据中返回由指定的字段和对应的值组成的字典。如果指定字段不存在,则跳过该字段。4. Python函数调用的时候参数的传递方式是值传递还是引用传递?5. 简述mysql和redis区别6. list=[2,3,5,4,9,6],从小到大排序,不许用sort,输出[2,3,4,5,6,9]7. 写一个单列模式8.map函数和reduce函数用法区别?9. 列出常见的状态码和意义1原创 2021-01-04 00:16:13 · 888 阅读 · 1 评论 -
python基础面试题(四)
文章目录1.有一个列表[3,4,1,2,5,6,6,5,4,3,3]请写一个函数,找出该列表中没有重复的数的总和2.字典根据键从小到大排序3.map(str,[1,2,3,4,5,6,7,8,9]) 输出是什么4.利用collections库的Counter方法统计字符串每个字符出现的次数"kjalfj;你ldsjafl;你hdsllfdhg;lahfbl;hl;ahlf;h"5.请简述标准库中functools.wraps的作用6.请给出下面代码片段的输出结果7.filter方法求出列表所有奇数并构造新列原创 2020-12-14 14:51:27 · 1275 阅读 · 3 评论 -
python基础面试题(三)
文章目录1.一行代码通过 filter 和 lambda 函数输出以list_a列表索引为基数对应的元素1.一行代码通过 filter 和 lambda 函数输出以list_a列表索引为基数对应的元素list_a=[12,22,88,2,22,4,3]# 答案l = filter(lambda x:x in list_a,[i for i in range(len(list_a))])print(list(l)) # [2, 3, 4]...原创 2020-12-10 00:37:37 · 804 阅读 · 0 评论 -
python基础面试题(二)
文章目录1.Python 垃圾回收机制2.内存泄露是什么?如何避免?1.Python 垃圾回收机制垃圾回收机制是自动帮助我们管理内存,清理垃圾的一种工具1. 引用计数当一个对象的引用被创建或者复制时,对象的引用计数加1;当一个对象的引用被销毁时,对象的引用计数减1;当对象的引用计数减少为0时,就意味着对象已经没有被任何人使用了,可以将其所占用的内存释放了。优点:简单、直观实时性,只要没有了引用就释放资源。缺点:维护引用计数需要消耗一定的资源,循环应用时,无法回收。也正是因为这个原原创 2020-12-06 22:25:47 · 2486 阅读 · 4 评论 -
python基础面试题(一)
1.Python 和 C、C++、Java等其他语言的对比1.C语言,它既有高级语言的特点,又具有汇编语言的特点,它是结构式语言。C语言应用指针:可以直接进行靠近硬件的操作,但是C的指针操作不做保护,也给它带来了很多不安全的因素。C++在这方面做了改进,在保留了指针操作的同时又增强了安全性,受到了一些用户的支持,但是,由于这些改进增加语言的复杂度,也为另一部分所诟病。Java则吸取了C++的教训,取消了指针操作,也取消了C++改进中一些备受争议的地方,在安全性和适合性方面均取得良好的效果,但其本身解释在原创 2020-11-23 20:03:36 · 1995 阅读 · 2 评论 -
正则表达式概要(下)
文章目录匹配分组匹配分组字符 功能| 匹配左右任意一个表达式(ab) 将括号中字符作为一个分组\num 引用分组num匹配到的字符串(?P<name>) 分组起别名(?P=name) 引用别名为name分组匹配到的字符串示例1:|需求:匹配出0-100之间的数字import reret = re.match("[1-9]?\d","8")print(ret.group()) # 8ret = re.match("[1-9]?\d",原创 2020-09-09 19:38:00 · 520 阅读 · 0 评论 -
正则表达式概要(上)
文章目录re模块操作匹配单个字符匹配多个字符re模块操作在Python中需要通过正则表达式对字符串进行匹配的时候,可以使用一个模块,名字为rere模块的使用过程 # 导入re模块 import re # 使用match方法进行匹配操作 result = re.match(正则表达式,要匹配的字符串) # 如果上一步匹配到数据的话,可以使用group方法来提取数据 result.group()re模块示例(匹配以sixstar开头的语句)原创 2020-09-05 09:37:53 · 491 阅读 · 0 评论 -
python单例模式
文章目录一、什么是单例模式?二、new方法new方法对init方法的影响三、尝试用new方法创建单例类一、什么是单例模式?保证整个系统中一个类只有一个对象的实例,实现这种功能的方式就叫单例模式。单例模式保证了在程序的不同位置都可以且仅可以取到同一个对象实例,如果实例不存在,会创建一个实例;如果已存在就会返回这个实例。因为单例是一个类,所以你也可以为其提供相应的操作方法,以便于对这个实例进行管理。python中,一个类创建对象实例是通过调用父类object的 new(cls)方法来创建对象的,因此我们原创 2020-07-18 10:36:27 · 556 阅读 · 0 评论 -
python面向对象三大特性之多态
文章目录一、什么是多态?二、多态的演示三、特殊的多态---鸭子类型一、什么是多态?一个对象具有多种形态, 在不同的使用环境中以不同的形态展示其功能, 那么我们就称该对象具有多态特征。所以我们可以给多态一个简单的定义:一个类继承了其他类的功能, 根据不同的场景, 切换不同的形态, 做到不同的功能, 我们就称之为多态。即多态发生在具有继承关系的基础之上。(当然,没有继承关系的多态也有,只不过用的情况极少,后面会讲)同⼀个对象, 多种形态. 这个在python中其实是很不容易说明⽩的. 因为我们⼀直在⽤原创 2020-07-15 20:12:06 · 1366 阅读 · 0 评论 -
python面向对象三大特性之继承
文章目录一、什么是继承?二、继承定义格式一、什么是继承?继承是一种类间关系, 描述一个类从另一个类获取成员信息的类间关系。如果一个类别A“继承自”另一个类别B,就把这个A称为“B的子类别”,而把B称为“A的父类别”也可以称“B是A的超类”。继承必定发生在两个类之间, 参与继承关系的双方成为是父类和子类。父类提供成员信息, 子类获取成员信息。继承可以使得子类具有父类的各种属性和方法,而不需要再次编写相同的代码。在令子类继承父类的同时,可以重新定义某些属性,并重写某些方法,即覆盖父类别的原有属性原创 2020-07-14 23:07:28 · 602 阅读 · 0 评论 -
python面向对象三大特性之封装
文章目录一、什么是封装?二、封装步骤三、演示私有属性和分装小结:一、什么是封装?封装:类里面不光有属性还有方法。这种将属性通过方法直接在类内部操作的形式就叫做封装。把很多数据封装到⼀个对象中,把固定功能的代码封装到⼀个代码块, 函数, 对象, 打包成模块. 这都属于封装的思想. 封装操作可以对受保护的成员进行功能开放的控制, 达到保护数据不被非法访问的目的。当然,方法也可以私有封装, 但是一般都用不到。二、封装步骤在使用面向对象的封装特性时,需要:1.将内容封装到某处2.从某处调用被封原创 2020-07-13 09:44:37 · 621 阅读 · 0 评论 -
Pycharm导入自己写的py文件,显示红色波浪线,提示No module named ‘’XXX”问题
学习python 时 遇到了pycharm 不能导入自己写的py模块问题,即使项目和要导入的模块在同一个目录也不行,就显示红色波浪线,提示No module named ‘’XXX”解决办法1.file -->setings2.找到Project Structure---->选择要导入的包所在的目录----->点击Sources------->最后点击OK问题解决。。。...原创 2020-06-30 20:47:54 · 686 阅读 · 0 评论 -
我来看 “对象”
面向对象初识在这之前,先要和大家讲一讲两种编程思维:从面向过程编程到面向对象编程。面向过程编程,看重的是解决问题的过程。比如说做一个PK小游戏咱们可以把它分解成了5个过程:这种分析出解决问题所需要的步骤,然后按照这些步骤解决问题的方法,就是面向过程编程。面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么...原创 2020-03-20 23:23:50 · 191 阅读 · 0 评论 -
python内置函数概要
什么是内置函数? 就是python给你提供的拿来直接⽤的函数, 比如print,input等等。python 解释器内置了很多函数和类型,以下按字母表顺序列出它们:作用域相关:locals() 返回当前作⽤域中的名字globals() 返回全局作⽤域中的名字迭代器相关:range() ⽣成数据next() 迭代器向下执⾏⼀次, 内部实际使⽤了__next__()⽅法返回迭代器的下⼀个...原创 2020-03-13 11:51:57 · 543 阅读 · 0 评论 -
生成器,生成器表达式及各种推导式
生成器什么是生成器?⽣成器实质就是迭代器.在python中有三种⽅式来获取⽣成器:通过⽣成器函数通过各种推导式来实现⽣成器通过数据的转换也可以获取⽣成器⾸先, 我们先看⼀个很简单的函数:def func(): print("枕上诗书闲处好,") return "门前风景雨来佳。"ret = func()print(ret)将函数中的return换成y...原创 2020-02-23 23:02:49 · 856 阅读 · 0 评论 -
函数名、闭包 、迭代器
⼀. 函数名的使用.函数名是⼀个变量, 但它是⼀个特殊的变量, 与括号配合可以执⾏函数的变量.1. 函数名可以赋值给其他变量2. 函数名可以当做容器类的元素3. 函数名可以当做函数的参数4. 函数名可以作为函数的返回值...原创 2020-02-19 23:18:10 · 354 阅读 · 0 评论 -
命名空间、 作用域及加载顺序、函数嵌套执行顺序、关键字global和nonlocal
一、命名空间在python解释器开始执⾏之后, 就会在内存中开辟⼀个空间, 每当遇到⼀个变量的时候, 就把变量名和值之间的关系记录下来, 但是当遇到函数定义的时候, 解释器只是把函数名读入内存, 表⽰这个函数存在了, ⾄于函数内部的变量和逻辑, 解释器是不关⼼的. 也就是说⼀开始的时候函数只是加载进来, 仅此⽽已, 只有当函数被调⽤和访问的时候, 解释器才会根据函数内部声明的变量来进⾏开...原创 2020-02-04 23:37:27 · 555 阅读 · 1 评论 -
封村了,没事讲讲函数吧
一、编程第一步,函数来引入理解函数学到这一步,我们已经使用过大量函数,如len()、max()、print()等,使用函数是真正开始编程的第一步。比如在程序中定义了一段代码用于实现一个特定的功能。问题来了:如果下次还需要实现同样的功能,难道要把前面的代码复制一次?很明显,这种方法很笨拙,若是每次都复制会出现大量的代码冗余终归不是好的解决之道。所以我们引入了函数的概念:对代码块和功能的封装和定...原创 2020-02-03 22:56:40 · 142 阅读 · 0 评论 -
文件操作概要
文件操作⼀. 初识文件操作使⽤python来读写⽂件是非常简单的操作. 我们使⽤open()函数来打开⼀个⽂件, 获取到⽂件句柄. 然后通过⽂件句柄就可以进⾏各种各样的操作了. 根据打开⽅式的不同能够执⾏的操作也会有相应的差异.打开⽂件的⽅式: r, w, a, r+, w+, a+, rb, wb, ab, r+b, w+b, a+b 默认使⽤的是r(只读)模式⼆. 只读操作(r, ...原创 2020-01-28 17:10:20 · 240 阅读 · 0 评论