自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(77)
  • 资源 (1)
  • 收藏
  • 关注

原创 python安装第三方包的几种方式

安装python第三方包,pip,whl,setup.py,pycahrm

2022-11-02 11:34:29 6332 1

原创 使用redis的setnx实现分布式锁(python实现)

在实际开发场景中,可能会出现多个服务可能会同时调用同一个方法的情况,但是想要保证在一定的时间内该方法只能被一个服务调用。1.单线程:首先redis本身是单线程的,当有多个线程同时访问redis的时候,一定是一个一个线程的按照顺序的访问redis,因此这是使用redis实现分布式锁的一个原因。2.原子性:setnx具有原子性,当有多个线程时,只会有一个线程可以使用setnx设置成功。3.特点:当有重复的锁key的时候setnx查询缓存就会返回false或者空,那我们可以利用它的这种机制去实现多个服务的同时调用

2022-07-02 19:00:33 1464

原创 python开发中如何实现自检代码并形成代码规范

typingblackisortpre-commit

2022-06-30 20:04:56 984

原创 开发中git的常见用法

创建分支:git branch 分支名称切换分支:git checkout 分支名称提交分支代码:git add .git commit -m "提交的代码描述"推送到远程分支:git push origin 分支名称删除本地分支:git branch -D 分支名称撤销提交commit的分支:git log该命令查看当前分支当前所指的对象git reset --soft 73cc772dd727f40c755cddcbec209f55

2022-04-19 11:49:47 379

原创 mac中安装pycurl报错error: command ‘clang‘ failed with exit status 1

使用命令安装pycurl: python3 -m pip install pycurl报错:ERROR: Command errored out with exit status 1: command: /Library/Developer/CommandLineTools/usr/bin/python3 -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/3s...

2021-08-23 16:11:18 1224 1

原创 error: command ‘gcc‘ failed with exit status 1报错解决

在执行如下命令在安装gerapy时sudo pip3 install gerapy出现如下报错信息解决方法:根绝报错信息,得知缺少python.h文件,因此添加python对应的devel文件就可以。因为我使用的是python3,执行如下命令,再重新执行安装命令,即可解决报错问题。(注:如果是python,则需要把改成python-devel执行即可)sudo yum install python3-devel...

2021-02-25 17:09:42 17652

原创 Python的Redis操作

一、安装Redis扩展库 安装redis扩展库pip install redis二、使用python操作Redis1、Redis和StrictRedisredis扩展库提供Redis和StrictRedis两个类来实现Redis的命令操作。StrictRedis实现了官方的命令,Redis是它的子类,兼容老版本,扩展库没有实现select方法,但是可以通过连接时指定使用的库。2、Redis的连接 1、简单连接 导入redis,创建Redis对象,所有命令行下...

2021-01-26 16:12:56 309

原创 redis数据库设置密码

一、设置密码如何设置密码:redis配置文件通常在/etc/redis.conf中,打开配置文件找到:#requirepass foobared去掉行前的注释,并修改密码为所需的密码:requirepass 密码修改完成后,保存文件,并退出。尝试用密码登录并执行具体的命令看到可以成功执行:redis-cli -h 127.0.0.1 -p 6379 -a 密码...

2021-01-25 14:46:57 551

原创 轻量级hook框架Frida的安装(包括客户端以及服务端)

最近在做抖音的数据爬取,但是在请求头中参数加密的问题使得无法进行数据的大量获取,因此想到使用hook的方式。Frida是一款基于python+JavaScript的轻量级hook框架,Frida的动态代码执行功能,主要是在它的核心引擎Gum中用C语言来实现的。注入模式:大部分情况下,我们都是附加到一个已经运行到进程或者是在程序启动到时候进行劫持,然后再在目标进程中运行我们的代码逻辑,这种方式是Frida最常用的使用方式。注入模式的大致实现思路是这样的,带有GumJS的Frida核心引擎被打包成一个动

2021-01-12 18:14:02 855

原创 python:面向对象编程中的继承和多态

一、继承和多态1、继承的好处:就是子类获得了父类的全部功能。2、多态:当子类和父类存在相同的方法时,子类的方法覆盖了父类的方法,在代码运行的时候,总是会调用子类的方法。二、在编程中最常见的使用举例如下(使用python实现):# Animal是父类class Animal(): def __init__(self,name): self.name = name def Call(self): pass def Run(self):

2021-01-07 18:32:19 650 1

原创 pip 安装scrapy报错解决

最近要重新部署环境,在进行pip安装scrapy框架时出现如下错误!!上面的提示其实是说明缺少c++14,这时并不需要进行下载,去python第三方库的网站上找这个对应版本的安装包里面ctrl+f搜索twisted,选择和python版本对应的版本下载,我这里用的是python3.9版本,因此选择的是如下图的第一个文件,下载并进行安装即可!!下载链接:https://www.lfd.uci.edu/~gohlke/pythonlibs/下载完成以后使用如下命令进行安装即可:pip

2020-10-19 15:06:56 721 1

原创 数据结构:串(c语言版)

一、串类型的定义计算机上的非数值处理的对象基本上都是字符串数据。串(或者字符串)是由零个或者多个字符组成的有限序列,串的值可以是字母、数字或者其他字符,串中字符的数目n称为串的长度,零个字符的串称为空串,它的长度为零。串中任意个连续的字符组成的子序列称为该串的子串。包含子串的串相应的称为主串。通常称字符在序列中的序号为该字符在串中的位置,子串在主串中的位置则以子串的第一个字符在主串中的位置来表示。如果两个串相等,当且仅当这两个串的值相等,也就是说,只有当两个串的长度相等,并且各个对应的位置的

2020-07-24 17:27:31 1888

原创 数据结构:栈和队列(c语言)

一、栈和队列基本介绍栈和队列是两种重要的线性结构。从数据结构角度来看,栈和队列也是线性表,其特殊性在于栈和队列的基本操作是线性表操作的子集,他们是操作受限制的线性表,因此,可称为限定性的数据结构。但从数据类型角度看,它们是和线性表大不相同的两类重要的抽象数据类型。由于它们广泛应用在各种软件系统中,因此在面向对象的程序设计中,它们是多型数据类型。二、栈栈是限定仅在表尾进行插入或者删除操作的线性表。因此,对栈来说,表尾端有特殊含义,称为栈顶,相应的,表头称为栈底。不含元素的空表称为空栈。栈的修改

2020-07-21 16:25:28 1114

原创 数据结构:线性表(c语言)

一、线性表的类型定义线性表是最常用且最简单的一种数据结构。一个线性表是n个数据元素的有限序列。线性表的顺序存储结构的特点是逻辑上相邻的两个元素在物理位置上也相邻,因此可以随机存取表中的任意一个元素。然而,这个特点也造成了这种存储结构的弱点:在进行插入和删除操作时。需要移动大量的元素。而另一种表示方法(链式存储结构),由于它不要求逻辑上相邻的元素在物理位置上也相邻,因此它没有顺序结构所具有的弱点,但同时也失去了顺序表可随机存取的优点。在稍微复杂的线性表中,一个数据元素可以由若干个数据项组成,在这.

2020-07-20 16:27:52 2063

原创 运行Scrapy,出现ImportError: DLL load failed: 找不到指定的程序的错误解决

今天突然发现使用scrapy框架一直定时爬取的程序突然报错了,因为我下载了matplotlib的包,有的说是版本不兼容的,然后我把我的版本降低,但是还是没有解决问题,因为我看到报错中显示无法导入win32api,所以我试着importwin32api,不出意料,无法显示正常导入,确定是win32api的问题后,我使用了如下方式解决:下载依赖包:https://pypi.org/project/pywin32/#files查看python版本,我的是3.7版本,因此我的选择如下:然后在终端输.

2020-05-21 10:54:51 1573 2

原创 使用selenium获取不到#document里面的网页内容的问题解决

一、问题出现的原因网页中有一种节点叫做iframe,相当于外部页面的子页面,它的结构和外部页面的结构是一致的。当我们使用selenium去模拟浏览器进行操作时,是默认的在父级Frame里面进行操作,但是页面中还存在子Frame,这时候是获取不到子Frame里面的节点的,也就表现在虽然在页面中有数据内容,但是使用模拟浏览器获取获取不到任何内容。二、解决方法# 获取#document下的...

2020-05-07 11:51:31 5376 6

原创 python中的类方法@classmethod和静态方法@staticmethod

Python中存在有三种定义类方法, 分别为:常规方式,、@classmethod修饰方式、@staticmethod修饰方式。一、类方法@classmethod该函数方法不需要进行实例化并且它不需要 self 参数,它的第一个参数为表示自身类的 cls 参数,它可以用来调用类的属性,类的方法,实例化对象等等。class A(object): # 常规方法,实例化类之后调...

2019-12-06 11:08:25 678

原创 发送HTTP请求时post或put方法报错返回415状态码的解决方法

在发送HTTP请求时,用post或者put方法时可能会出现415的错误,解决方法:只需要在请求头中加入如下字段即可:"Content-Type":"application/json"完整的请求头如下:headers = { "Content-Type": "application/json", "Accep...

2019-12-03 15:53:29 4031

原创 快速获取模拟器中App的appPackage和appActivity

在这里模拟器以逍遥模拟器为例,app以网易云音乐的App为例进行说明。一、首先,设置逍遥模拟器中开发者选项中的usb调试开启,然后打开网易云音乐APP二、然后,启动cmd,在终端输入如下命令连接逍遥模拟器;adb connect 127.0.0.1:21503三、输入如下命令进行登录模拟设备adb shell登录完成后,输入如下命令获取; dumpsys acti...

2019-11-29 13:43:32 1945

原创 用python实现时间戳和日期形式的字符串转换

在爬虫爬取的数据中时间的形式很多时候都是时间戳的形式,这时候想要存放成日期的形式,方便记录存放!使用time模块 import time# 时间戳time_stamp = time.time()# 时间戳转换为字符串print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time_stamp)))当然!字符串也可...

2019-11-20 11:41:41 303

原创 连接Appium和模拟器(夜神/逍遥)/实体手机

一、下载和配置AppiumAppium客户端的下载,点击如下链接进入到下载页面选择合适的版本进行下载即可:https://github.com/appium/appium-desktop/releases/tag/v1.13.0上面是通过Appium客户端页面的实现的,我们可以用上面这种方式来测试我们是否成功模拟浏览器以及直观的确定我们需要点击的元素和模拟滑动的位置等。此外如果我们...

2019-10-11 17:11:43 2071

原创 使用el-cascader"报错TypeError: Cannot read property 'level' of null"的解决

一、问题描述在使用Cascader 级联选择器中的el-cascader组件进行级联效果实现的时候,想要实现级联选择器中根据指定条件默认选中级联选项的效果,但是设置完默认选项之后虽然可以显示预想的效果,但是总是会报以上的错误。二、解决方法因为Cascader下拉进行显示的数据是由后台接口进行提供,在进行默认值显示修改时,将后台返回的数据赋值给v-model绑定的数据,进行如此的赋值是能...

2019-09-11 14:49:23 23800 20

翻译 MVC模式

MVC架构模式将应用程序分为三个主要部分,分别为:模型、视图和控制器。使用该模式,可以实现把用户的请求路由到控制器,然后控制器选择要显示给用户的视图,并提供需要的模型数据。上面这种分工有利于根据其复杂性来缩放应用程序,因为这更易于编码、调试和测试包含单一作业的某个组成部分(模型、视图或者控制器)。但是这会加大更新、测试和调试代码的难度,该代码在这3个领域的两个或者多个领域之间存在依...

2019-08-26 15:00:15 695

原创 Scrapy爬虫中断后无法恢原本的爬取队列的解决方法

我们在使用 Scrapy框架进行大规模爬取网站数据时,总可能会遇到各种各样的问题导致我们不得不中断已经启动的爬虫。这时我们就需要考虑有没有一种方法可以恢复我们中断前的爬取队列,以至于能让爬虫的爬取具有连续性。一、原理 Scrapy进行爬取的Request 队列是存放在内存中的,在爬虫程序运行中断后,这个队列所占用的空间就被马上释放了,从而该队列就将不会存在了。 ...

2019-08-20 17:08:25 2270

原创 使用网络抓包工具charles截获手机端App数据的下载、配置以及使用

一、使用抓包工具的原因:我们在web端爬取时,一般是通过浏览器的开发者工具就可以监听到各个网络请求和响应的过程。但是如果我们想在APP端爬取数据时,我们就需要去借助抓包软件来获取我们想要的内容了。比较常用的抓包软件有:Filddler和Charles等。这两个抓包工具的原理是大致相同的,我们可以通过设置代理的方式将手机处于抓包软件的监听下。下面我就来介绍下如果进行Charles的配置。二、...

2019-07-26 19:30:34 1128

原创 TypeError: Object of type datetime is not JSON serializable

一、问题描述我是在使用requests.post(url=douyin_url, json=singer_data)时,需要传入singer_data但是其中的一个字段是时间这个特殊字段。如:{'rankingDate': '2019-06-20 17:05:03.483030'},其中这个值是通过datetime.datetime.now()获得的当前时间。结果执行时出现上面的错误。...

2019-06-20 17:16:26 4765 1

原创 获取手机APP的appPackage和appActivity

一、获取appPackage和appActivity在终端检测电脑是否连接上移动设备adb devices -l然后运行待检测的App,执行如下命令:adb shell然后在里面输入命令即可:dumpsys window windows | grep -E 'mFocusedApp'...

2019-06-05 10:33:17 833

原创 scrapy中自定义日志的设置以及日志等级的介绍以及使用

(1)在settings.py中添加:LOG_FILE = 'log.txt'用来设置日志文件的名称。LOG_ENABLED 默认: True,启用loggingLOG_ENCODING 默认: ‘utf-8’,logging使用的编码LOG_FILE 默认: None,在当前目录里创建logging输出文件的文件名LOG_LEVEL 默认: ‘DEBUG’,log的最低...

2019-05-15 15:47:03 4672

原创 在centos7中实现SpiderKeeper的开机自启动

1.最近在centos7上部署了下scrapy+scrapyd+SpiderKeeper,需要实现scrapyd和SpiderKeeper的开机自启动。其中scrapyd的开机自启动的博客比较多,只需要在/etc/rc.d/init.d中配置下scrapyd启动文件即可。2.由于我在实现SpiderKeeper的开机自启动服务上花费了大量的时间,下面我就介绍下实现过程:(1)首先...

2019-05-14 16:38:10 369 6

原创 scrapy爬虫项目的部署以及可视化管理

一、介绍在这里使用的是scrapyd部署,scrapyd-deploy进行打包,spiderkeeper进行项目可视化管理。spiderkeeper是开源的spider可视化管理工具,它可以很方便的实现爬虫的启动,暂停,定时等,同时还具有可以查看分布式下所有爬虫的日志、爬虫执行情况等功能。二、使用安装相关环境python3.7.3pipinstall scrapypipin...

2019-04-29 16:35:51 842

原创 安装完scrapyd-client后使用scrapyd-deploy时出现无法正常运行的情况的解决

我这边是在windows上运行了:scrapyd-deploy -h用来查看scrapyd-deploy能否正常运行,发现出现了提示选择打开文件的形式的提示框,解决方法:在python安装包的我的是在:C:\software\Scripts位置建立一个scrapyd-deploy.bat文件,里面添加内容:@echo off"C:\software\python.exe" "...

2019-04-29 15:28:39 762

原创 web.Server Traceback (most recent call last): builtins.AttributeError: 'int' object has no attribute

在使用scrapyd部署查看job时出现以下错误:web.Server Traceback (most recent call last):builtins.AttributeError: 'int' object has no attribute 'splitlines'c:\software\lib\site-packages\twisted\web\server.py:199 in...

2019-04-23 16:35:50 716

转载 Charles破解

在Help窗口内选择Register Charles。// 适用于Charles任意版本的注册码// Charles 4.2目前是最新版,可用。Registered Name: https://zhile.ioLicense Key: 48891cf209c6d32bf4...

2019-04-12 11:07:40 97

原创 ValueError: Invalid configuration: - Deprecated option 'domaincontroller': use 'http_authenticator

安装完爬虫框架pyspider之后,使用pyspider all 命令,输入http://localhost:5000运行就出现上述错误原因是因为WsgiDAV发布了版本 pre-release 3.x。解决方法如下:在安装包中找到pyspider的资源包,然后找到webui文件里面的webdav.py文件打开,修改第209行即可。把'domaincontroller': N...

2019-03-05 19:12:58 9231 7

原创 抓包程序mitmproxy的安装以及使用(以Windows为例)

一、介绍说明mitmproxy是一个支持HTTP和HTTPS的抓包程序,有类似Fiddler、Charles的功能,只不过它是一个控制台的形式操作。mitmproxy还有两个关联组件。一个是mitmdump,它是mitmproxy的命令行接口,利用它我们可以对接Python脚本,用Python实现监听后的处理。另一个是mitmweb,它是一个Web程序,通过它我们可以清楚观察mitmpro...

2019-02-27 16:12:49 3836 2

原创 使用Python实现任务的定时的几种方式,着重介绍调度框架APScheduler的使用

一、使用sleep这种方式是最简单的,在循环里面放入要执行的任务,然后 sleep 一段时间再执行即可。例如:from datetime import datetimeimport time# 每n秒执行一次def timer(n): while True: print(datetime.now().strftime("%Y-%m-%d %H:%M:%S...

2018-12-27 10:11:41 953

原创 Django中实现站点管理

概述:内容发布:负责添加、修改、删除内容,开发这些重复的功能是一件非常没有意义的事情,并且缺乏创造力。Django会根据定义的模型类来自动生成管理模块公共访问配置Admin应用:默认已经配置:'django.contrib.admin',创建管理员用户:python manage.py createsuperuser;按顺序输入用户名、邮箱、密码127.0.0.1:8000/admi...

2018-12-04 10:11:02 332

原创 mysql数据库的连接以及基本操作

一、Mysql数据库的连接Python标准数据库接口为Python DB-API, Python DB-API为开发人员提供了数据库应用 编程接口。不同的数据库你需要下载不同的DB API模块,例如你需要访问Oracle数据库和Mysql数据,你需要下载Oracle和MySQL数据库模块。DB-API是一个规范。它定义了一系列必须的对象和数据库存取方式, 以便为各种各样的底层数据库系统...

2018-12-04 10:08:45 822

原创 在python中使用pickle模块实现序列化

1.序列化变量从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flattening等等,不过意思都是一样的。序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上。反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化,即unpickling。用于序列化...

2018-12-04 10:02:20 465

原创 ajax的相关介绍以及使用

Ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。它可以通过在后台与服务器先进行少量数据交换,使网页实现异步更新。这就代表可以在不重新加载整个网页的情况下,对网页的某部分进行更新。如果不使用ajax,进行Form的提交,当用户点击“Submit”按钮后,表单开始提交,浏览器就会刷新页面,然后在新页面里告诉你操作是成功了还是失败了。如果由于网络太慢或者其他原因,就会得到...

2018-11-28 14:59:03 181

Jadxgui(JAVA反编译工具)v1.1.0中文版_42_109512

安卓的反编译工具,下载相关软件的apk文件,可以编译出APP的java源代码文件,并进行分析查找相关的功能函数进行分析

2020-11-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除