我相信很多已经下载好Stablediffusion或者midjourney软件的朋友,第一反应都是看着满屏看不懂的各种选项发懵吧,而当你稳住心神,准备在文生图或者图生图这两块基础操作力大显身手,想创造出属于自己的艺术设计之时,难免会对着下面这个框框陷入两难:我应该填什么呢?我应该如何描述呢?
这期分享的内容将彻底解决您的以上困惑,让您在以后得AI绘画操作中,再也不会对提示词犯难!
我将用三种提示词使用方式为您彻底讲解如何玩转提示词:
一、基础插件:提示词补充与反推
(1)提示词补充 这个插件名为Tag Autocompletion,在扩展里面直接搜Tag Auto就会出现,下载之后,它会自动为您补全提示词,比方说我们想输入一个男孩,它就会如图下方:
当我输入“1”的时候,它会自动生成提示词帮你补全,不过,值得我推荐的插件,当然不会仅仅只有这种简单的功能,我更为您推荐的是它的另一种功能,也是小白们最最最喜欢的功能--中文输入!!!
直接上图展示吧!
看见没,当我想要输入“苹果”的时候,我只需要中文输入“苹”,这个插件就会自动帮助我们生成苹果的提示词,有了这个插件,在您想要创造自己任何一种风格时,您与AI之间的沟通,将畅通无阻,您可以随意向它输入您想要描述的所有词汇了!
注:安装的是我发的安装包的话,所有我介绍的插件都会包含在安装包内,无需额外下载!具体下载地址可以看我前几期内容。
(2)关键词反推
这个插件的名称叫做Tagger,小伙伴们会不会经常有一种感觉,看到别人画的一张图,感觉好厉害,好喜欢,但是苦于不知道这张图的提示词,我能不能画一张一样的图呢?小编很明确的告诉你,能!非常的能!,所以你很难安装Tagger之后,您可以在您的操作界面看到一个“WD1.4标签”的选项,我们点击进去,找到一张我们喜欢的图,“点击反推”就会出现以下画面:
是不是很神奇?它甚至还会为您把关键词的权重做一个排列,当然也有一些其他的功能,但是不方便阐述,不过看到这里,有的小伙伴可能就瞬间明白了,这个插件的功能,简单来说,类似于你所见,皆可画!
由于篇幅原因,本期内容先到这里吧,下期内容我将会继续讲解另外两种方法的操作,如果感兴趣的话,请给我点个关注吧~~~
想了解更多AI相关内容,可以进入下面的网站,搜索“AI”类目,更多精彩内容在其中哦!
云端汇ZAL本网站“云端汇”旨在服务各类亟需提升自我,继续学习,深造学习,准备或者正在创业的人群,以优质的文章、课程,最新最全的内容,为每一位会员提供最优质的学习服务,致力于完善各类目学习资源的平台,以满足大家需求为主,本站将保持每日更新的进度,以保障最佳的服务。http://www.yunduanzz.com/
概要 PDF(Portable Document Format)是一种常见的文档格式,广泛用于存储和共享文本和图像数据。在 Python 中,有许多库可以用于处理 PDF 文件,其中之一就是 PyPDF。PyPDF 是一个功能强大的库,它允许你读取、创建和操作 PDF 文件。本文将介绍 PyPDF 的基本概念、安装方法以及一些常见的用法示例,以帮助大家开始使用 PyPDF 处理 PDF 文件。
什么是 PyPDF? PyPDF 是一个用于处理 PDF 文件的 Python 库。它提供了一组工具和功能,用于读取、解析和操作 PDF 文件的内容。
安装 PyPDF 要开始使用 PyPDF,首先需要安装它。可以使用 pip 命令来安装 PyPDF2(PyPDF 的常用版本):
pip install PyPDF2 安装完成后,就可以在 Python 中导入 PyPDF2 模块,并开始处理 PDF 文件。
基本用法示例 1. 读取 PDF 文件内容 使用 PyPDF,可以轻松读取 PDF 文件中的文本内容。
以下是一个示例,演示了如何打开一个 PDF 文件并提取其文本内容:
import PyPDF2 # 打开 PDF 文件 pdf_file = open('example.pdf', 'rb') # 创建 PDF 读取器对象 pdf_reader = PyPDF2.
博主最近在复习数字信号处理,发现几个概念类的知识点属实有点迷糊,相信也有不少小伙伴发愁,今天一篇文章带大家梳理一下数字信号系统中FT 、FS、 DTFT、 DFS、 DFT都是些啥玩应,他们的含义区别联系作用都是什么。
先来一张总的框图,有一定基础的小伙伴应该能反应过来,不懂也没关系,看完这篇文章就会豁然开朗了。
目录
1、FS——傅里叶级数
2、FT———傅里叶变换
3、DTFT——离散时间傅里叶变换
4、DFT——离散傅里叶变换
5、DFS——离散傅里叶级数
1、FS——傅里叶级数 (1) 含义:在数学中,傅里叶级数是把类似波的函数表示成简单谐波的方式。更正式地说,对于满足狄利克雷定理的周期函数,其傅里叶级数是由一组正弦与余弦函数的加权和表示的方法。傅里叶级数与用来找出无周期函数的频率信息的傅里叶变换有密切的关系。
(2)定义式:
(3)连续周期信号— FS:时域周期 频域离散
2、FT———傅里叶变换 (1)含义:傅里叶变换,表示能将满足一定条件的某个函数表示成三角函数(正弦和或余弦函数)或者它们的积分的线性组合。
(2)定义式: 它可以将一个 以时间t为自变量 的连续的信号 f(t) 转换为 以频率为自变量 的函数 F(jf),该函数是复数形式的。
f(t) 是一个时域上连续的信号。t 从负无穷到正无穷积分。频率f 连续,其得到的结果 F(jf) 也为频率域上连续的频谱。 (3) 连续非周期信号—FT:时域非周期 频域连续
3、DTFT——离散时间傅里叶变换 (1)含义:离散时间傅里叶变换 (DTFT) 是傅里叶变换的进一步发展。然而,傅立叶变换将时间视为连续的,而离散时间傅立叶变换,顾名思义,将时间视为单个时刻的离散列表。
(2)定义式:
(3)DTFT存在条件:x[n]—绝对可和
(4)性质:
(5)离散非周期信号—DTFT:时域离散 频域周期
4、DFT——离散傅里叶变换 (1)含义:离散傅里叶变换(DFT),是傅里叶变换在时域和频域上都呈现离散的形式,将时域信号的采样变换为在离散时间傅里叶变换(DTFT)频域的采样。在形式上,变换两端(时域和频域上)的序列是有限长的,而实际上这两组序列都应当被认为是离散周期信号的主值序列。即使对有限长的离散信号作DFT,也应当将其看作经过周期延拓成为周期信号再作变换。在实际应用中通常采用快速傅里叶变换(FFT)以高效计算DFT。
(2) 定义式:
(3) 旋转因子:
(4)性质:
(5)用DFT进行谱分析各参数
5、DFS——离散傅里叶级数 (1)含义:离散傅里叶级数(DFS)用于表示一个具有周期性的信号 x[n],并且在信号周期内进行频域分解。
MySQL报错“too many connections”通常是由于数据库的最大连接数超过了MySQL配置的最大限制。这可能是由于数据库的并发连接过多,或者存在一些连接没有被正确关闭。这里给出一些可能的解决方案:
1、linux登录mysql:
mysql -u root -p; 2、查看mysql允许的最大连接数
show variables like '%max_connections%'; 3、查看这次mysql服务启动到现在,同一时刻最多mysql有多少连接
show status like 'Max_used_connections'; 4、修改mysql最大连接数
set global max_connections=1000; 5、以上步骤修改后虽然能登录,但仍有隐患,我们应该把那些sleep的连接杀掉
(1)查看所有连接状态,会发现很多状态是sleep的
show processlist ; (2)修改wait_timeout
wait_timeout — 指的是mysql在关闭一个非交互的连接之前所要等待的秒数
如果你没有修改过MySQL的配置,wait_timeout的初始值是28800
wait_timeout 过大有弊端,其体现就是MySQL里大量的SLEEP进程无法及时释放,拖累系统性能,不过也不能把这个指设置的过小,否则你可能会遭遇到“MySQL has gone away”之类的问题
set global wait_timeout=1000; 注意事项:
在高并发场景下,可以考虑设置max_user_connections参数来限制单个用户的最大连接数。
确保MySQL服务器的资源(如内存、CPU)不是瓶颈,因为资源不足也可能导致连接问题。
定期审查和调整数据库的配置参数,以适应业务的发展和变化。
大家好,小编为大家解答python官网下载第三方库的问题。很多人还不知道python常用第三方库下载,现在让我们一起来看看吧!
一、下载.whl文件方式(推荐!!) 以从清华源下载一个numpy-1.21.6-cp37-cp37m-win_amd64.whl文件为例。
①先进入网站 在浏览器输入格式为:https://pypi.tuna.tsinghua.edu.cn/simple/要下载的第三方库名/,我这里输入的是https://pypi.tuna.tsinghua.edu.cn/simple/numpy/
②使用全局搜索ctrl+f,根据自己需要的版本下载 我图上圈的,1.21.6表示numpy版本,cp37表示对应python版本为3.7,win_amd64表示适合64位机器python建议自学吗。我圈的上一个,win32表示适合32位机器。
这里我的python是3.7,所以就搜索cp37,找到自己需要的版本下载。
③将下载好的文件移动到python下的Scripts文件夹中 就是在python解释器的文件夹下有个Scripts文件夹,找不到可以直接在pycharm中的文件File-->设置setting-->python解释器python interpreter查看,就可以看到当前所用的解释器的路径,在文件资源管理器打开,就会发现此路径下有个Scripts文件夹。
将下载好的文件移动到Scripts文件夹中
④在文件路径框输入cmd,回车 输入pip install numpy-1.21.6-cp37-cp37m-win_amd64.whl,回车安装
这里我出现了以下错误 这是因为使用的 pip 版本过旧,建议升级到最新版本,根据他提示的命令升级即可
然后再继续安装,成功
完成后将pycharm重启,就可以调用这些第三方库了,同时也可以在文件File-->设置setting-->python解释器python interpreter查看,第三方库已经安装成功啦。
二、 下载.tar.gz文件方式 一般有.whl文件的话最好用.whl文件,因为我用tar文件安装时有时候会有一些莫名其妙的问题
有的库找不到.whl文件,只有.tar.gz文件,那就只能用tar安装了
以下载robotframework-ride库为例
①进入网站 在浏览器输入格式为:https://pypi.org/projrct/要下载的第三方库名/#files(.whl文件也可在此网站下载)
我这里输入的是https://pypi.org/projrct/robotframework-ride/#files,进入后下载压缩包
如果想要下载指定版本的库,可以点击Release history进行版本选择
②解压tar文件 在文件路径框输入cmd,回车
解压压缩包,提取到python下的site-packages包中,该包在Lib文件夹中,Lib文件夹与上面提到的Scripts文件夹在同一路径
命令为:tar -zxvf pandas-2.0.3.tar.gz -C 提取文件到指定位置的路径 进入解压后的目录,提取后的结果如下
③cmd进入解压后的目录 针对setup.py进行操作,命令如下:
python setup.py install
这样安装完成了
可以用pip list命令查看已安装的库
一、fiddler下载安装 安装包下载链接:https://www.telerik.com/download/fiddler
随便选个用途,填写邮箱,地区选择China,勾选“I accept the Fiddler End User License Agreement”,点击“DownLoad for windows”,下载。
双击FiddlerSetup.exe安装fiddler,可以选择常用的、不那么深的一个路径。
在安装路径下,双击Fiddler.exe,能打开,说明安装成功,可以给Fiddler.exe创建一个桌面快捷方式。
二、fiddler配置 双击Fiddler.exe,弹出“AppContainer Configuration”对话框,点击“cancel”就行。
Progress Telerik Fiddler Web Debugger菜单栏中,Tools——Options。
2-1.HTTPS配置 HTTPS的配置如下:
勾选Capture HTTPS CONNECTs、Decrypt HTTPS traffic、Ignore server certificate errors(unsafe)。
点击OK保存。
弹出对话框“SCARY TEXT AHEAD:Read Carefully!”,点击YES。
弹出对话框“安全警告”,询问是否安装证书,点击是。
弹出对话框“Add certificate to the Machine Root List?”,点击YES。
弹出对话框“TrustCert Success”,点击确定。
再点击一下options中的ok,以防忘记保存配置。
Decrypt HTTPS traffic中的选项说明:
from all processes : 抓取所有的 https 程序, 包括电脑程序和手机APP。 from browsers only : 只抓取浏览器中的https请求。 from non-browsers only : 只抓取除了浏览器之外的所有https请求。 from remote clients only: 只抓取远程的客户端的https请求,就是只抓取手机APP上的https请求。 注意事项:
参考博客:【操作系统之模拟文件管理系统 - CSDN App】
并在此基础上进行了修改和完善部分代码
这是我的第一篇CSDN,内容有点长
实验内容 文件管理
一、目的
通过模拟磁盘,完成操作系统的文件管理功能,掌握包括目录结构的管理、外存空【操作系统之模拟文件管理系统 - CSDN App】间的分配与释放以及空闲空间管理三部分。为写入模拟磁盘的数据文件建立目录,目录可以是单级文件目录、双级文件目录、树形结构目录。在目录中选择某个文件可以将其数据读入模拟内存。
二、设计内容
通过初始化操作建立一个模拟磁盘,在模拟磁盘中保存目录和文件内容。创建该模拟磁盘时可创建初始的根目录内容、文件分配表。文件目录项(可以采用FCB格式)应包括文件名、类型(目录 or文件)、创建日期、大小、第一个磁盘块块号。目录管理需支持:
新建目录:在目录中新建空目录; 删除目录:删除空目录
为文件建立目录项:一个文件创建成功后,为该文件创建目录项,并将文件和相关信息写入目录;
删除文件:删除目录中某个文件,删除其在磁盘中的数据,并删除目录项。如果被删除文件已经读入内存应阻止删除,完成基本的文件保护。 三、 设计要求
不同的功能使用不同的函数实现(模块化),对每个函数的功能和调用接口要注释清楚。对程序其它部分也进行必要的注释。对系统进行功能模块分析、画出总流程图和各模块流程图。用户界面要求使用方便、简洁明了、美观大方、格式统一。所有功能可以反复使用,最好使用菜单。通过命令行相应选项能直接进入某个相应菜单选项的功能模块。所有程序需调试通过。 实验说明 本实验是参考了http://t.csdnimg.cn/B0Fqh
,并在此基础上进行了修改和完善部分代码。
本次实验为Linux系统设计了一个简单的二级文件系统,可以做到以下几点:
可用命令及说明 register 用户的注册login 用户的登入cd 切换目录mkdir 创建用户的子目录rmdir 删除用户的子目录dir 显示当前目录的子目录create 创建文件夹的文件del 删除文件夹的文件open 打开文件close 关闭文件read 读文件write 写文件set 设置文件的保护码exit 退出系统look 查看系统中的所有用户fatused 查看目前块的状态用户登入时会对用户名和密码进行匹配进入系统的第一步需要注册账号并登入(为测试方便,初始化了一个用户)在创建子目录时必须先登入不可在打开的状态下进行任何删除操作删除子目录或文件时释放其空间创建文件和打开文件时必须先进入文件夹文件被打开后可进行读写操作文件保护码为2可读可写,为0不可读,其他不可写 文件结构 这些图表是我的一点理解,可能存在偏差
用户文件结构
打开文件结构
创建文件流程图
删除文件流程图
代码说明 整体结构 #define BLOCK_SIZE 512 //每一个磁盘块的大小 #define BLOCK_NUM 64 //磁盘块数量 #define MAX_FILE_NUM 16 //每个文件夹的最大文件数 #define MAX_FOLDER_NUM 16 //每个用户可以拥有的最大文件夹数 #define MAX_OPEN_FILE_NUM 16 //最大同时打开文件数 #define MAX_USER_NUM 16 //最大用户数 主目录 存放用户数据结构 最大可存放16个用户用户名密码指向用户的指针 struct MFD//用户数据结构 { string username;//用户名 string password;//密码 struct USER_UFD *next;//指向用户文件的指针 }; 子目录(文件夹数据结构)
1 Diffusion Model的运作过程 输入一张和我们所需结果图尺寸一致的噪声图像,通过Denoise模块逐步减少noise,最终生成我们需要的效果图。
图中Denoise模块虽然是同一个,但是它会根据不同step的输入图像和代表noise严重程度的参数选择denoise的程度。
1.1 Denoise 模块的内部过程 根据我们输入带噪声的图像和去噪程度的参数,Denoise模块中的Noise pred模块会预测出图中的noise部分,此时输入图像和预测噪声的差即为该step的输出结果。
问:为何选择预测噪声做差而不是直接预测消除部分噪声后的图像?
由于预测噪声的难度更低,如果直接预测带噪声后的图像其实就已经相当于可以实现图像的生成了。
1.2 如何训练Noise_predictor 想要训练Noise_predictor预测出来噪声,我们需要提供噪声的Ground truth,这个如何获得?
我们从训练数据集中随机抽取一张图像,然后人为给其加噪声,我们人为添加的噪声即是Noise_predictor中的groundTruth,该添加噪声的过程也被称为foward process。
2 Stable Diffusion stable diffusion包括三大模块:TextEncoder、Generation Model、Decoder,三个模块独立训练,最终组合。
2.1 TextEncoder TextEncoder对结果的影响很大,远大于diffusion model,增大TextEncoder模型,效果明显,而增大diffusion model模型,效果则没那么显著。
2.1.1 FID的理解 将真实图片和生成图片分别输入到一个CNN分类器,假设他们都满足高斯分布,计算他们的距离,距离越小,说明生成的图片效果越好,距离越大说明生成的图片效果越差。注意,FID的计算需要充足数量的样本。
2.1.2 CLIP score的理解 clip分为TextEncoder和imageEncoder两个模块,将text输入到TextEncoder中获得的向量与将image送入到imageEncoder中获得的向量进行比较,如果输入的text和image是成对的,则结果向量越近越好,反之,越远越好。
2.2 Decoder 2.2.1 若中间产物为小图 直接训练一个输入为小图,输出为大图的模型。
2.2.2 若中间产物为latent representation 训练一个Auto-encoder,即将输入的图像通过encoder可以获得一个latent representation,随后再经历Decoder还原成一张图,该图与原图进行对比,即完成训练流程。最终取用其中的decoder模块即可。
2.3 Generation Model 将noise加到encoder后的latent representation上,通过noise predictor预测出噪声,得到去噪后的图像
3 Diffusion Model 数学原理 3.1 VAE与Diffusion Model区别 3.2 Diffusion Model训练过程原理: 随机选取一张干净的原始图像初始化一个迭代次数t初始化一个噪声利用Noise predictor预测加噪后图片的噪声与真实噪声之间的差距,约束其越小越好
3.3 Diffusion Model推理过程原理: 4 图像生成模型原理 4.
该实验是通过ContentProvider读取手机通讯录
知识点包含了RecyclerView控件、UriMatcher、ContentResolver
先看效果,显示手机通讯录
首先是界面的布局代码
activity_main59.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity59"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#42BCF3" android:gravity="center" android:text="通讯录" android:textColor="#FFFFFF" android:textSize="30dp" /> <androidx.recyclerview.widget.RecyclerView android:id="@+id/rv" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#E4E0E0" /> </LinearLayout> 其次是RecyclerView的item布局代码,其中使用了CardView是为了方便快捷的弄个圆角储来
main59_item.xml
<?xml version="1.0" encoding="utf-8"?> <androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" xmlns:app="http://schemas.android.com/apk/res-auto" android:padding="40dp" app:cardCornerRadius="40px" android:layout_marginTop="20dp" android:background="@color/white"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/txlogo"/> <LinearLayout android:layout_marginLeft="10dp" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:id="@+id/name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="姓名" android:textSize="20dp" android:textStyle="bold" /> <TextView android:layout_width="wrap_content" android:layout_height="
适合期末复习c++看,或者刚入门c++的小白看,有的题会补充知识点,期末复习题的代码一般比较简单,所以语法上没那么严谨。本文所有题目要求全在代码块的最上面。
目录
1、设计复数类
2、设计Computer类
3、实现相加的函数模板
4、圆类的设计
5、学生类设计
6、求圆与直线位置关系
7、家庭账户共享
8、栈类的设计
9、主人召唤宠物
10、点圆圆柱单继承
11、点长方形长方体单继承
12、点圆球体运行时多态
13、学生数据写入文件和读取
14、图形抽象类派生具体类求多个图形面积
15、 除数为0的异常处理
16、学生数据修改【文件操作】
17、分数的加减
18、统计字符数组中某个字符出现次数
1、设计复数类 //设计复数类Complex和友元运算符重载>>及<<实现复数类对象的标准输入和输出 #include<iostream> using namespace std; class Complex { private: double real, imag; public: Complex(double r = 0, double i = 0) { real = r; imag = i; } //下面是友元的声明,所以函数参数只写类型是可以的 friend istream& operator>>(istream&, Complex&); friend ostream& operator<<(ostream&, Complex&); }; istream& operator>>(istream& input, Complex& c) { //输入实部和虚部 input >> c.
文章目录 1. 前言2. 环境3. 开始3.1 账号密码输入3.2 通过验证码3.2.1 验证码图片下载3.2.2 滑块需要移动的距离计算3.2.3 定位滑动按钮3.2.4 模拟滑动3.2.5 后续处理 4. 完整代码关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包+项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面试资料六、Python兼职渠道 1. 前言 最近有点时间,就随便找点东西弄弄,倒也碰到了一些问题,在此记录下
2. 环境 Python3.11.3 + selenium4.9.1 + opencv4.7 + PyAutoGUI0.9.54 + windows11
3. 开始 3.1 账号密码输入 进入登录页面,登录方式有两种,这里直接定位点击账号登录即可
# 进入登入页面 self.driver.get(self.config.login_url) WebDriverWait(self.driver, 10).until(EC.url_to_be(self.config.login_url)) self.driver.maximize_window() # 点击账号登录 WebDriverWait(self.driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//*[@class="login-tab login-tab-r"]/a'))) self.driver.find_element(By.XPATH, '//*[@class="login-tab login-tab-r"]/a').click() # 账号密码输入 self.driver.find_element(By.ID, "loginname").send_keys(self.user_info.username) self.driver.find_element(By.ID, "nloginpwd").send_keys(self.user_info.password) 3.2 通过验证码 3.2.1 验证码图片下载 看到验证码的图片是base64格式的,可以通过src属性来获取,然后直接转成cv图片格式即可
bigimg_b64 = self.driver.find_element(By.XPATH, '//*[@class="JDJRV-bigimg"]/img').get_attribute('src') bigimg_data = base64.b64decode(bigimg_b64.replace('data:image/png;base64,', '')) bigimg_array = np.
1.错误信息如下:
Unable to make field private final java.lang.String java.io.File.path accessible: module java.base does not "opens java.io" to unnamed module
2.解决方法:
--add-exports=java.base/sun.nio.ch=ALL-UNNAMED \
--add-opens=java.base/java.lang=ALL-UNNAMED \
--add-opens=java.base/java.lang.reflect=ALL-UNNAMED \
--add-opens=java.base/java.io=ALL-UNNAMED \
--add-exports=jdk.unsupported/sun.misc=ALL-UNNAMED
# Project-wide Gradle settings. # IDE (e.g. Android Studio) users: # Gradle settings configured through the IDE *will override* # any settings specified in this file. # For more details on how to configure your build environment visit # http://www.gradle.org/docs/current/userguide/build_environment.html # Specifies the JVM arguments used for the daemon process.
前言 大麦网,是中国综合类现场娱乐票务营销平台,业务覆盖演唱会、 话剧、音乐剧、体育赛事等领域。
但是因为票数有限,还有黄牛们不能丢了饭碗,所以导致了,很多人都抢不到票
那么,今天带大家用Python来制作一个自动抢票的脚本小程序
知识点: 面向对象编程selenium 操作浏览器pickle 保存和读取Cookie实现免登陆time 做延时操作os 创建文件,判断文件是否存在 开发环境: 版 本:anaconda5.2.0(python3.6.5)编辑器:pycharm 先导入本次所需的模块 import os import time import pickle from time import sleep from selenium import webdriver 第一步,实现免登录 确定目标,设置全局变量 # 大麦网主页 damai_url = "https://www.damai.cn/" # 登录页 login_url = "https://passport.damai.cn/login?ru=https%3A%2F%2Fwww.damai.cn%2F" # 抢票目标页 target_url = 'https://detail.damai.cn/item.htm?spm=a2oeg.search_category.0.0.77f24d15RWgT4o&id=654534889506&clicktitle=%E5%A4%A7%E4%BC%97%E7 初始化加载 class Concert: def __init__(self): self.status = 0 # 状态,表示如今进行到何种程度 self.login_method = 1 # {0:模拟登录,1:Cookie登录}自行选择登录方式 self.driver = webdriver.Chrome(executable_path='chromedriver.exe') # 默认Chrome浏览器 登录调用设置cookie def set_cookie(self): self.
对于淘宝、天猫,相信大家已经无比的熟悉,在每年的双十一、双十二,或是其他购物节,平台都会上架性价比超高的一些商品,商品的性价比越高,自然吸引购买者的眼光也越多。不知道你是否有这样的经历,半夜卡着点等待心仪商品放出,狂点手机,却一秒库存不足。这是因为,背后有许许多多的抢购机器人,在与你竞争,在程序面前,眼睛看到+手工点击的速度,无疑是慢了。
本次的文章,我将分享一个淘宝/天猫的秒杀脚本,有了这个脚本,大家至少可以与其他的机器人站在同一起跑线上,公平的抢购喜欢的宝贝。就让我们来看看吧!
第一步: 首先我的思路很简单,就是让“程序”帮我们自动打开浏览器,进入淘宝,然后到购物车等待抢购时间,自动购买并支付。
第二步: 导入模块,我们需要一个时间模块,抢购的时间,还有一个Python的自动化操作。
代码如下:
import datetime #模块 now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f') import time #全自动化Python代码操作 from selenium import webdriver 第三步: 根据我们的思路,首先需要程序帮我们打开谷歌浏览器,并输入“www.taobao.com”,然后点击登录,进入到购物车。
代码如下 times = "2021-11-04 21:00:00.00000000" browser = webdriver.Chrome() browser.get("https://www.taobao.com") time.sleep(3) #点击 browser.find_element_by_link_text("亲,请登录").click() 不过这里有一个问题就是,我们不能把我们的账户、密码写在代码里边,这样很容易泄露,所以这里采取手动扫码登录
print(f"请尽快扫码登录") time.sleep(10) browser.get("https://cart.taobao.com/cart.htm") time.sleep(3) 第四步: 进入购物车,等待抢购时间然后购买。
首先这个程序不能帮我们去挑选商品,所以我们得提前把商品加入到购物车里面。
等到了抢购时间,直接全选商品购买就可以了。
# 是否全选购物车 while True: try: if browser.find_element_by_id("J_SelectAll1"): browser.find_element_by_id("J_SelectAll1").click() break except: print(f"找不到购买按钮") while True: #获取电脑现在的时间, year month day now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f') # 对比时间,时间到的话就点击结算 print(now) #判断是不是到了秒杀时间? if now > times: # 点击结算按钮 while True: try: if browser.
文章目录 前言一、分析购票过程二、Selenium 模拟浏览器操作三、逆向工程:抢票接口总结 前言 你是否错过了周杰伦的票,又没抢到五月天的票,不要太难过,这里有超牛的抢票方法,加油哦!
为了帮助你在激烈的抢票竞争中获得更大的成功机会,本文将介绍抢票软件的实现原理以及我所了解的一些抢票方式。但是,请不要过度将希望寄托于抢票软件,它有时也不灵,经过我的验证,即使你用到了抢票软件,也不一定能抢到票。
票务平台会经常调整反爬策略打击爬虫行为,如果希望抢票软件保持较高的成功率,是需要开发者针对票务平台的打击策略作出逻辑调整,这个成本是很高的,所以你能随手获得的抢票软件很大概率是抢不到票的或者说是不安全的。
在调研过程发现一个有意思的点 “黄牛的票从来不是抢来的”。相关规定,面向市场公开销售的营业性演出门票数量,不得低于核准观众数量的70%。 而剩下的那 30%,即非公开销售的票,则是黄牛票的主要来源,也叫渠道票。这里面涉及主办方对热门票和冷门票的售票策略,黄牛在这链条中扮演着重要的角色,只要演唱会门票的二级市场不会消失,黄牛就永远不会消失,对于市场本身来说,愿意花更多钱买黄牛票的人,一定是更有需求的人,黄牛不过是市场调节的人格化。
一、分析购票过程 现在无论是买火车票、飞机票、演唱会票基本都是使用电子支付网上购票,之后得到一张电子票凭证,进场前打印纸质票或者闸机核销票据二维码进场,那么我们从用户角度看下,一次完整的购票过程是什么样。
用户的购票流程:
首先用户登录 票务 APP 搜索爱豆的门票,点击查看门票详情,然后选择场次和票档。等待抢票倒计时,才能进入到下一个页面;倒计时结束后,开抢按钮被点亮,用户进入下一步选择观演人,确认信息后选择付款方式提交订单;如果手速足够快、运气足够好,抢到了票就会唤起所选的支付方式 APP 提示付款;如果没有抢到则会提示拥堵,跳转到票档选择页面。 下面,我将这个图补充一下,思考下哪些步骤是用户可以提高出票成功率的关键时间节点:
很显然,用户在倒计时之前看不到的页面就是竞争手速的关键时机,当这个开抢按钮被倒计时点亮的一瞬间,要以最快的速度点击到达隐藏页面,然后选中观演人,通常使用默认的支付方式,最后提交订单。一旦订单被提交成功,就说明锁定了席位抢到了票。如果用户在规定的时间内未付款,该席位会重新流入票池,捡漏的人就可以抢到。
到这里,我们知道了购票流程和提高抢票成功率的突破口,人的手速肯定没有机器快,接下来介绍下两种常用的技术抢票方案。
二、Selenium 模拟浏览器操作 在使用 Chrome 浏览器,用户可以使用鼠标滑动、按键点击以及键盘输入,作为信号输入设备向浏览器传达指令,浏览器收到指令后执行渲染。
这里提到的 Selenium WebDriver 是对浏览器提供的原生 API 进行封装,使用这套 API 可以操控浏览器的开启、关闭,打开网页,操作界面元素,控制 Cookie。简单说就是,可以通过写代码的方式来自动实现用户鼠标和键盘信号的输入。这么一来,可以做的事就非常多了。
下面是一个简单脚本,它首先打开 chrome 浏览器输入 google 的网址,等待 5 秒,浏览器网页打开后,找到输入框输入 ”ChromeDriver“,然后模拟点击搜索按钮,就能看到浏览器上搜索的结果。
import time from selenium import webdriver from selenium.webdriver.common.by import By browser.get("https://www.google.com") time.sleep(5) # 查找元素 search_box = browser.find_element(By.NAME, 'q') # 模拟按键输入 search_box.send_keys('ChromeDriver') # 搜索框模拟回车 search_box.submit() time.
使用Python爬虫时需要安装各种依赖库。安装一共有四种方法:
一、使用pip命令在线安装
二、在pycharm中在线安装
三、使用库的安装包本地安装
四、安装anaconda—anaconda中包含一般使用的所有库
一:pip安装
此步骤需要提前安装好python环境和pip。
1.按windows+R键输入cmd后打开cmd
2.进入cmd后进入到pip的目录
这里的pip目录是你的python目录下的Scripts,鼠标点到Scripts后面即可选中目录复制即可。
那在cmd中如何进入此路径?
先找到你的pip目录,如上图我的pip.exe在F盘,在cmd中输入E: 再敲回车即可进入E盘,进入E盘后再在cmd中输入
cd (这里有空格) E:\develope_tools\Python311\Scripts
Tips:如果你找不到你的python安装路径了。那么可以在cmd中使用这个命令:
python -m site
比如我这里:
上图标红的地方就是你的python安装路径,复制此路径然后在后面添加\Scripts就是你的pip路径了。
3.找到pip目录后就可以使用pip命令安装第三方库了,这里以requests库为例:
以requests库为例:
安装命令:
pip install requests
可以看到我这里虽然安装成功了,但是我实际安装下载了半天。
因为这些库都是国外的源。默认是从 https://files.pythonhosted.org/ 网站上下载。这是个国外的网站,遇到网络情况不好的时候,可能会下载失败,我们可以通过命令,修改pip安装软件时的镜像源。
格式:
pip install 包名 -i 国内源地址 示例:
pip install resuests -i https://pypi.tuna.tsinghua.edu.cn/simple/
当然国内镜像源很多,上面-i后面的可以随意更换为下面任意镜像源:
国内常用的pip下载源列表: 推荐使用清华大学镜像源,速度比较快,内容也很全。
阿里云 http://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
豆瓣(douban) https://pypi.douban.com/simple/
清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
中国科学技术大学 https://pypi.mirrors.ustc.edu.cn/simple/
4.此时你的包就安装成功了,如果想要检查可以使用下面命令查看你的pip包有没有你刚才安装的包。
Pip list
这里可以看到我的requests已经安装成功了。
二:pycharm在线安装
这种方法同样需要找到你的python安装目录,并要在pycharm中设置好你的python解释器。
这里的界面是中文界面,不是中文界面的可以先百度搜索pycharm安装中文插件。
1.打开pycharm创建工程,并设置python解释器。
点击新建项目
这里位置最好不要选择默认,找一个自己能够找到的目录,或者在C盘以外的盘新建一个文件夹。然后注意:一定要点开python解释器这个选项选择pythhon解释器。
选择第二个选项,不要选择第一个,如果这里你之前没有设置过,点击添加解释器
按照上图找到你的python安装路径下的python.exe点击添加。此时你的python解释器应该已经设置好了。
idea如果和jdk版本不对应,就会出现无法运行的情况,如下:
翻译:无法确定17的“tools.jar”库的路径(C:\Program Files\Java\jdk-17)
原因:idea版本是2020.2,而jdk版本是17,由于jdk版本过高,所以idea无法解析,不能运行代码
像这种情况解决方法有两种:
1.降低jdk版本,或者升级idea版本
2.再下载一个更低jdk版本,然后在idea中切换路径即可,我个人是不喜欢下载多个jdk版本,具体看个人
jdk和idea支持的版本:仅供参考
IDEA版本 Java 支持版本
IntelliJIDEA 2022.3 Java 7(1.7.0)~19
IntelliJIDEA 2022.2 Java 6(1.6.0)~19
IntelliJIDEA 2022.1 Java 6(1.6.0)~18
InteliJIDEA 2021.3 Java 6(1.6.0)~17
IntelliJIDEA 2021.2 Java 6(1.6.0)~ 17
IntelliJIDEA 2021.1 Java 6(1.6.0)~16
IntelliJ IDEA 2020.3 Java 6(1.6.0)~15
IntelliJIDEA 2020.2 Java 6(1.6.0)~15
IntelliJIDEA 2020.1 Java 6(1.6.0) ~14
IntelliJIDEA 2019.3 Java 6(1.6.0)~13
IntelliJIDEA 2019.2 Java 6(1.6.0)~ 13
IntelliJIDEA 2019.1 Java 6(1.6.0)~12
JDK的版本更新历程:
图片来自:JDK(SunMicrosystems针对Java开发员的产品)_百度百科
文章目录 前言开发工具环境搭建效果展示代码展示模块导入窗口设置其他代码 总结零基础Python学习资源介绍👉Python学习路线汇总👈👉Python必备开发工具👈👉Python学习视频600合集👈👉实战案例👈👉100道Python练习题👈👉面试刷题👈 资料领取 前言 halo,包子们晚上好
很久没有更新啦,主要是小编这边最近有点小忙
今天给大家实现一个视频播放器,可以看任何电影,电视剧,不要再为以后看电视看电影而烦恼啦,今天是福利文章,相信我绝对有用
开发工具 Python版本:3.7.8
相关模块:
requests模块;
webbrowser模块;
re模块;
以及一些python自带的模块。
环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可。
效果展示 话不多说直接看,不能做过多的展示
代码展示 模块导入 # 源码领取Q裙:494958217 import tkinter as tk import requests import re import webbrowser 窗口设置 # 源码领取Q裙:494958217 # 创建窗口 root = tk.Tk() # 设置标题 root.title('在线观看电影') # 设置窗体大小 root.geometry('800x300+200+200') 其他代码 # 源码领取Q裙:494958217 def show(): num = number_int_var.get() html = link_va.get() if num == 1: link = 'https://jiexi.pengdouw.com/jiexi1/?url=' + html response = requests.
情景
当我导入大数据量时,使用LOAD DATA INFILE进行导入,出现了错误 ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement 表明你的 MySQL 服务器启用了 --secure-file-priv 选项,这个选项限制了 MySQL 可以执行文件操作的目录。这通常出现在尝试使用 LOAD DATA INFILE 或 SELECT ... INTO OUTFILE 语句时。
问题原因
出现这个问题的原因是mysql的secure_file_priv这个选项没有开启,或者这个选择了特定的文件路径,只有在这个路径下的文件才能导入导出mysql。
解决这个问题的方法取决于你的具体需求和 MySQL 服务器的配置:
1.检查 --secure-file-priv 的值
首先,你可以检查 --secure-file-priv 选项的值,以了解 MySQL 允许文件操作的目录。
在 MySQL 命令行中执行以下命令:
SHOW VARIABLES LIKE 'secure_file_priv'; 我这里这个参数的值是NULL,说明mysql中就没有设置secure_file_priv这个选项。如果这个参数是个特定的文件路径,就说明文件只有在这个路径下才能将它导入导出到mysql。参数secure_file_priv的值及说明如下:
secure_file_priv值说明NULL禁止文件的导入导出''(空字符串)允许所有文件的导入导出一个特定的路径地址只有该路径地址下的文件可以导入导出到mysql 2.修改或禁用 --secure-file-priv
如果你有权限修改 MySQL 服务器配置,可以更改 --secure-file-priv 选项的值。这通常在 MySQL 的配置文件中设置(如 my.
这个错误通常是因为系统无法找到正确的Java安装路径。要解决这个问题,你需要设置JAVA_HOME环境变量来指向Java的安装路径。
在Windows系统上,你可以按照以下步骤设置JAVA_HOME环境变量:
找到你的Java安装路径。通常情况下,Java安装在类似 “C:\Program Files\Java\jdk1.x.x_xx” 这样的位置。
右键点击“此电脑”(或“我的电脑”),选择“属性”。
点击“高级系统设置”。
在弹出的窗口中,点击“环境变量”按钮。
在“系统变量”下面,点击“新建”按钮。
在变量名中输入“JAVA_HOME”,在变量值中输入你的Java安装路径(比如:“C:\Program Files\Java\jdk1.x.x_xx”)。
点击“确定”保存设置,并关闭所有打开的窗口。