-
代理IP
概述反爬中有一个很重要的方法就是封IP[永久封禁或封禁一段时间],网站会将一些短时间内访问量特别大的IP给封禁,为了防止IP被网站封禁而无法访问该网站,我们可以使用代理IP来防止本机IP被封。使用每隔一段时间就切换代理IP的方法来持续进行大量的请求和访问。去哪找代理IP?百度免费的有,付费的也有注意:你需要访问http的网站,就找支持http的IP;要访问https的网站,就找支持https的IP!实现我们先把请求发给代理服务器,由代理服务器发送我们的请求我们现在来使用94.76.137....…
-
字符验证码与破解
概述字符验证码是网站反爬机制中十分常见的一种通过让用户登陆操作在登陆操作时输入图片中含有的字符来甄别正常用户和爬虫。识别操作 人工识别(适用于访问量较小的情景) 第三方自动操作使用第三方自动识别 云打码等付费识别 其他的开源模块看你个人咯,这些付费的往往会用起来更加便捷这里我使用pillow和pytesseract来实现验证码的识别。算逑!配置cv2配置了半天都每配置好,我决定使用 ddddocrddddocrDdddOcr接受的参数: ...…
-
MySQL基础
主要的SQL语句 DQL: 数据查询语言 DML: 数据操作语言 TPL: 事务处理语言 DCL: 数据控制语言 DDL: 数据定义语言常用的SQL命令 SELECT - 从数据库中提取数据 UPDATE - 更新数据库中的数据 DELETE - 从数据库中删除数据 INSERT INTO - 向数据库中插入新数据 CREATE DATABASE - 创建新数据库 ALTER DATABASE - 修改数据库 CREATE TABLE - 创建新表 ALTER T...…
-
Markdown简明指北
Markdown编辑器常用的Markdown编辑器主要有Typora和其他各大装了Markdown渲染插件的IDEMarkdown语法 基础 在Markdown中一行与一行是连起来,的如果你要在段落内换行,请在上一行的末尾加上两个空格。 请确保段落与段落之间留有至少一个空行 标题:在Markdown中标题创建有两种方法 在标题下一行加任意数量个-或=,加-是一级标题,加=是二级标题 ...…
-
三行指令让CPU为我显示温度
查看CPU温度可以不用其他软件!以管理员身份打开Windows PowerShell输入:$temp=gwmi msacpi_thermalzonetemperature -namespace root/wmi注意:这个是一定要输入的!不然的话你的CPU的温度就成绝对零度了!还有这等好事? 查看CPU当前温度: $temp.CurrentTemperature/10-273.15 查看CPU预警温度: $temp.CriticalTripPoint/10-273.15 这就行啦!…
-
正则表达式
使用re模块进行正则操作import re.match(pattern,string,flags=0)从起始位置开始匹配,匹配不成功则返回None.search(pattern,string,flags=0)返回第一个成功的匹配.findall(pattern,string,pos=0,endpos=len(string))找到所有成功的匹配,并返回一个列表.finditer(pattern,string,flags=0)找到所有成功的匹配,并返回一个迭代器.split(pattern,s...…
-
生成器
生成器类似于返回值为数组的一个函数,这个函数可以接受参数,可以被调用,但是,不同于一般的函数会一次性返回包括了所有数值的数组,生成器一次只能产生一个值,这样消耗的内存数量将大大减小,而且允许调用函数可以很快的处理前几个返回值,因此生成器看起来像是一个函数,但是表现得却像是迭代器。创建生成器 使用类似列表生成器的方法 data——list1 = (x*x for i in range(10))print(data_list1) 我们发现,它返回了一个<genera...…
-
协程基础
协程线程数量非常多的时候,会有两个问题:一是系统线程会占用非常多的内存空间,二是过多的线程切换会占用大量的系统时间。协程刚好可以解决上述2个问题。协程运行在线程之上,当一个协程执行完成后,可以选择主动让出,让另一个协程运行在当前线程之上。协程并没有增加线程数量,只是在线程的基础之上通过分时复用的方式运行多个协程,而且协程的切换在用户态完成,切换的代价比线程从用户态到内核态的代价小很多。def work1(): while True: print("work1:...")...…
-
CSS样式优先级
CSS 优先规则1: 最近的祖先样式比其他祖先样式优先级高。 CSS 优先规则2:“直接样式”比”祖先样式”优先级高。 CSS 优先规则3:优先级关系:内联样式 > ID 选择器 > 类选择器 = 属性选择器 = 伪类选择器 > 标签选择器 = 伪元素选择器 CSS 优先规则4:计算选择符中 ID 选择器的个数(a),计算选择符中类选择器、属性选择器以及伪类选择器的个数之和(b),计算选择符中标签选择器和伪元素选择器的个数之和(c)。按 a、b、c 的顺序依...…
-
UA监测与伪装
UA监测门户网站的服务器检测对应请求的身份标识,若为浏览器,说明此请求为”正常”请求若不是基于某一款浏览器,则为”不正常”请求,服务请就拒绝该请求UA伪装通过修改请求头的User-Agent,把爬虫对应的身份标识伪装成浏览器,防止访问请求被拒绝。我们试着爬一下搜狗搜索返回的信息import requestsif __name__ == '__main__': url1 = "https://www.sogou.com/web?" url2 = input("请输入要搜索的内容:...…
-
广播机制与通用函数
通⽤函数就是能同时对元素内所有元素逐个进⾏运算的函数。 从运算符参与运算数据的⻆度分类,通⽤函数⾮为两类: ⼀元通⽤函数(unary ufunc): 对单个输⼊进⾏操作 ⼆元通⽤函数(binary ufunc): 对两个输⼊进⾏操作 从功能上分类,通⽤函数分为算术计算函数,双曲三⻆函数,位运算类,⽐较运算符,弧度⻆度转换类等。 当两个数组的形状并不相...…
-
10行代码写斐波那契数列
思路斐波那契数列,每一项都是前两项的和定义a为当前项,b为此项与前一项的和即当前项的下一项。每当next()时,输出当前的a,之后使用a=b ,b =a+b使用迭代器,15行完成斐波那契数列class Fibnacci(object): # 创建迭代器 def __init__(self,num): self.num , self.index , self.a , self.b =num , 0 ,1 ,1 # 指定生成的项数 ,记录下标,初始a,初始b ...…
-
用手机做电脑副屏
效果十分好,达成也十分简单。你可以用副屏来放置文档,这样就可以不影响主屏幕的情况下随时查看文档。或者你可以在副屏上放视频,同样也不影响主屏幕。避免了窗口之间转换的麻烦。手机/平板端首先,在AppStore里面下载XDisplay,打开。用数据线把手机或平板和PC/Mac连接起来。然后选择信任你的电脑。PC/Mac端同样的下载XDisplay,打开。你会发现你的平板/手机会默认复制主屏幕的内容。这个时候,打开设置,搜索display,选择复制或扩展到连接的显示器,选择多显示器设置,选择扩展这...…
-
关于数组的一二三
使用numpy.array()来创建一个数组。传入的数据可以是一个元组或列表。numpy数组的索引这里以二维数组为例,坐标(行数,列数)array1 = numpy.array([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]) array1 0 1 2 3 0 1 2 3 4 1 ...…
-
学习资料(二)
W3school在线教程W3school中文,W3school十分全面的在线学习网站。它的内容以Web开发为主。最重要的是,该网站为网页开发人员提供了大量资源和参考资料。它给出的案例也可以给学习者做出应用示范。同时,它也蹄冻了一些测验和考试,可以让学习者检测一下自己的掌握程度。同时,它也提供了教学视频,视频也能让学习者更容易理解。该网站也非常具有互动性,它允许你在网站本身的嵌入式编辑器中尝试和练习代码。…
-
迭代
Python中可迭代对象并不是指某种具体的数据类型,它是指存储了元素的一个容器对象,且容器中的元素可以通过__iter__( )方法或__getitem__( )方法访问。常见可迭代对象有list、tuple、dict、set、str等。判断可迭代对象使用isinstance()判断一个对象是否可迭代from collections import Iterableprint(isinstance([1,2,3,],Iterable))显然[1,2,3]这个列表是个可迭代对象,返回Truec...…
-
福利:盲盒脚本
import asynciofrom asyncio import tasksimport aiohttp,aiofilesimport os,timeheaders={ 'user-agent':r'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36' }async def wirte_demo(cot,...…
-
项目:文件copy器
import osimport multiprocessingdef copy_work(source_dir,dest_dir,file_name): print(multiprocessing.current_process()) source_path = source_dir+"/"+file_name dest_path = dest_dir+ "/"+file_name print(source_path,"------>",dest_path) ...…
-
消息队列—多个进程之间的信息传递
消息队列用于实现多个进程之间的信息共享最先放进队列的信息被最先取出,最后放进队列的被最后取出【类似羽毛球筒】。使用消息队列继承multiprocessing.Queue()来创建一个消息队列,最重要的参数是maxsize=默认为0,设置了队列的最大长度,放入多于maxsize的数据会阻塞,直到有值从队列中取出。 放值(向队列头放) 使用.put()向队列里面加入元素,若队列已满,则会阻塞,直到有值从队列中取出。 使用.put_nowait()立即向队列里加入元...…
-
进程基础
进程基础进程是资源分配的最小单位,也是线程的容器。一个进程中包含多个线程。运行的程序及所调用的资源是进程。进程的状态使用进程继承multiprocessing模块中的multiprocessing.Process()类来创建一个模块,使用target=指定要执行的函数,使用args=或kwargs=指定参数,使用group=指定进程组,name=指定进程名。最常用的就是target和args。【大体与线程相同】# 导入模块import multiprocessingimport time#...…