自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 收藏
  • 关注

原创 js反爬

环境搭建下载网站:https://nodejs.org/en/download/参考网站:https://blog.csdn.net/qq_41465646/article/details/107656044安装js代码调试工具发条js代码调试工具安装 PyExecJs模块pip install PyExecJs -i https://pypi.douban.com/simpleJS中常见的算法• 线性散列MD5算法• 对称加密DES/AES算法• 非对称加密算法RSA

2021-04-11 15:31:15 667 8

原创 fiddler移动端抓取

夜神模拟器配置fiddler设置选择这个选项打开这个浏览器直接点击继续提示有证书问题,我们来安装证书,点击继续输入我们的ip地址总体过程代码爬取豆果美食所要携带的信息header = { "client": "4", "version": "6922.2", "device": "MI 6", "sdk": "19,4.4.2", "imei": "8632540104485

2021-03-26 15:16:40 229

原创 fiddler抓包⼯具的使⽤

什么是fiddler?Fiddler是⼀个http协议调试代理⼯具,它能够记录并检查所有你的电脑和互联⽹ 之间的http通讯官⽹https://www.telerik.com/fiddlerfiddler功能很强⼤⽀持IE、Chrome、FireFox等等浏览器 可以在phone、pad等移动设备进⾏连接fiddler的安装选择安装路径点击Install安装中SwitchyOmega插件的安装https://www.cnblogs.co

2021-03-24 15:01:15 154

原创 Mongodb 下

一、聚合聚合是基于数据处理的聚合管道,每个⽂档通过⼀个由多个阶段组成的管道, 可以对每个阶段的管道进⾏分组、过滤等功能,然后经过⼀系列的处理,输出 相应的结果(一).常⽤的管道$group:将集合中的⽂档分组,可⽤于统计结果 $match:过滤数据,只输出符合条件的⽂档 $sort:将输⼊⽂档排序后输出 $limit:限制聚合管道返回的⽂档书 $skip:跳过指定数量的⽂档,并返回余下的⽂档(二).测试数据db.stu.insert({name:"a", hometown: '东北

2021-03-15 15:41:36 90

原创 Mongodb数据库(上)

一、介绍MongoDB是⼀个基于分布式⽂件存储的nosql数据库。在处理⼤数据的时候会 ⽐MySQL更有优势。爬⾍的数据如果上了⼀个量级,可能⽤MongoDB会⽐ MySQL更好二、SQL和NoSQL的主要区别在SQL中层级关系:数据库->表->数据在NoSQL中是:数据库->集合->⽂档MongoDB的优势(一)⽆数据结构限制没有表结构的概念,每条记录可以有完全不同的结构 业务开发⽅便快捷{name:'⼩明',sex:'男'} {name:

2021-03-14 15:03:21 241

原创 Scrapy与redis的结合(Scrapy 分布式)

一 ,Scrapy-分布式(1)什么是scrapy_redisscrapy_redis:Redis-based components for scrapygithub地址:https://github.com/rmax/scrapy-redis(2)Scrapy和Scrapy-redis 有什么区别?1.Scrapy是爬虫的一个框架 爬取效率非常高 具有高度的可定制性 不支持分布式2.Scrapy-redis 它是基于redis数据库 运行在scrapy框架之上的一个组件

2021-03-10 16:35:45 1332

原创 Redis数据库操作

背景随着互联⽹+⼤数据时代的来临,传统的关系型数据库已经不能满⾜中⼤型⽹站 ⽇益增⻓的访问量和数据量。这个时候就需要⼀种能够快速存取数据的组件来缓解数据库服务I/O的压⼒,来解决系统性能上的瓶颈。Redis是什么?Redis是⼀个⾼性能的,开源的,C语⾔开发的,键值对存储数据的nosql数据 库。NoSQL:not only sql,泛指⾮关系型数据库 Redis/MongoDB/Hbase Hadoop关系型数据库:MySQL、oracle、SqlServerMySql数据

2021-03-08 16:29:59 261

原创 Scrapy CrawlSpider案例补充

案例一在网站上爬取微信小程序开发文章:爬取标题作者,发布时间,以及标题。并用Scrapy CrawlSpider进行自动翻页。第一步进行项目创建:scrapy startproject sp第二步进入这个项目:cd sp第三步进行爬虫项目的创建scrapy genspider -t crawl wxapp www.wxapp-union.com第四步进行爬虫项目代码的编写-------------爬虫项目----------------------

2021-02-21 09:20:23 169

原创 Scrapy--3 Scrapy CrawlSpider说明

Scrapy CrawlSpider说明------------------------------------问题----------------------------------------------之前的代码中,我们有很⼤⼀部分时间在寻找下⼀⻚的URL地址或者内容的 URL地址上⾯,这个过程能更简单⼀些吗?思路:1.从response中提取所有的标签对应的URL地址2.⾃动的构造⾃⼰resquests请求,发送给引擎⽬标:通过爬⾍了解crawlspider

2021-02-20 15:04:19 241 2

原创 Scrapy--2 pipeline管道

pipline使⽤-----------------------------pipline使用------------------------------------------------------从pipeline的字典形可以看出来,pipeline可以有多个,⽽且确实pipeline能够 定义多个-----为什么需要多个pipeline:1.可能会有多个spider,不同的pipeline处理不同的item的内容2.⼀个spider的内容可以要做不同的操作,⽐如存⼊不同的数据库中

2021-02-07 10:29:21 461

原创 Scrapy基础简介--1

Scrapy介绍----------------------------SCRAPY介绍----------------------------------------什么是Scrapy Scrapy是⼀个为了爬取⽹站数据,提取结构性数据⽽编写的应⽤框架,我们只 需要实现少量的代码,就能够快速的抓取Scrapy使⽤了Twisted异步⽹络框架,可以加快我们的下载速度可配置和扩展性高框架是基于异步Twisted异步网络框架,扭曲的scrapy网址介绍:http://scrapy-c

2021-02-06 14:25:32 177

原创 Day20-3 Scrapy集成selenium (拓展)

前言-----------------------如何在scrapy中集成selenium?----------------------------------------实现自动翻页------------先通过正常思路写出selenium操作然后在把逻辑集成到scrapy中创建一个Scrapy CrawlSpider项目scrapy genspider -t crawal 爬虫名字 域名---------------------------------代码-------------

2021-02-05 09:42:18 211

原创 Scrapy day20-2 IP代理

前言---------------------为什么设置代理IP--------------------------------------------------代理的作用突破自身的IP访问限制隐藏自身真实的IP如何获取ip快代理 西刺代理…免费的代理(几乎用不了)https://h.wandouip.com/get#api(豌豆荚代理)付费代理测试网址http://httpbin.org/ip #返回外网ip地址--------------------普通代理i

2021-02-05 09:13:47 266 1

原创 19.1Scrapy中间件及在中间件中修改请求头

下载中间件下载中间件是scrapy提供⽤于⽤于在爬⾍过程中可修改Request和Response, ⽤于扩展scrapy的功能-----------------下载中间件-------------------------------使⽤⽅法: 编写⼀个Download Middlewares和我们编写⼀个pipeline⼀样,定义⼀个 类,然后再settings中开启Download Middlewares默认⽅法:处理请求,处理响应,对应两个⽅法:process_request(se

2021-02-03 14:24:15 1075

原创 19,Scrapy模拟登录

代入——————我们是怎样进行模拟登录的呢?直接携带cookie来请求页面直接发送post请求(携带登录密码,账号进行登录)找到发送post请求的URL地址,带上信息,发送请求 Scrapy模拟登录⼈⼈⽹ 携带cookie Scrapy模拟登录github 发送post请求 Scrapy⾃动登录 Scrapy下载图⽚selenium进行模拟登录(找到对应的input标签,输入内容,点击登录)案例1模拟登录人人网 (携带cookice进行登录)----------------------

2021-02-03 11:22:21 224

原创 多线程

多线程基本介绍有很多的场景中的事情是同时进⾏的,⽐如开⻋的时候 ⼿和脚共同来驾驶汽⻋,再⽐如唱歌跳舞也是同时进⾏的程序中模拟多任务如何创建多线程1.通过函数进行创建多线程使用threading模块中的Thread类,在这个类中有一个target参数需要传递一个函数对象。而在这个函数里面,就是多线程的逻辑2.通过类的方式创建一个类,当时这个类需要基础threading.Thread。并实现(重写)run()方法。在run()方法中实现多线程的逻辑。#主线程会等待子线程执行结束之后,主

2021-01-16 19:07:22 108

原创 图形验证码识别

Tesseract安装以及简介阻碍我们爬⾍的。有时候正是在登录或者请求⼀些数据时候的图形验证码。因此这⾥我们讲解⼀种能将图⽚翻译成⽂字的技术。将图⽚翻译成⽂字⼀般被称为光学⽂字识别(Optical Character Recognition),简写为OCR。实现OCR的库不是很多,特别是开源的。因为这块存在⼀定的技术壁垒(需要⼤量的数据、算法、机器学习、深度学习知识等),并且如果做好了具有很⾼的商业价值。因此开源的⽐较少。这⾥介绍⼀个⽐较优秀的图像识别开源库:Tesseract。Tess

2021-01-16 18:30:21 344

原创 selenium登录铁路12306进行模拟购票

selenium实现12306购票初衷: 练习一下selenium的知识点 一定可以的第一步 登录不要把驱动写到我们的类里面。因为这样会随着类的销毁驱动也会消失,我们要放到全局变量里面登录成功之后 做了一个显示等待 条件是 个人中心的页面第二步 车次以及余票查询## https://kyfw.12306.cn/otn/leftTicket/init?linktypeid=dc由个人详情页面跳转到了车次查询界面获取所有的站点以及对应的编号 --> 保存到了一个字典当中 key

2021-01-11 11:33:28 3180

原创 selenium下

1.⾏为链1.有时候在⻚⾯中的操作可能要有很多步,那么这时候可以使⽤⿏标⾏为链类2.ActionChains来完成。⽐如现在要将⿏标移动到某个元素上并执⾏点击事件还有更多的⿏标相关的操作click_and_hold(element):点击但不松开⿏标。context_click(element):右键点击。double_click(element):双击。更多⽅法请参考:http://selenium-python.readthedocs.io/api.htmlimpo

2021-01-11 11:22:23 276

原创 bs4下

select()⽅法https://www.w3school.com.cn/cssref/css_selectors.aspselect()方法详细```python#1获取所有的trtrs=soup.select('tr')print(trs)""""""#2获取第二个tr标签tr=soup.select('tr')[1]print(tr)""""""#3获取所有class等于event的标签tr=soup.select('.even')print(tr)""""

2020-12-30 19:03:48 231

原创 xpath应用

xpath介绍基本概念XPath(XML Path Language)是⼀种XML的查询语⾔,他能在XML树状 结构中寻找节点。XPath ⽤于在 XML ⽂档中通过元素和属性进⾏导航xml是⼀种标记语法的⽂本格式,xpath可以⽅便的定位xml中的元素和其中的属性值。lxml是python中的⼀个第三⽅模块,它包含了将html⽂本转成xml对象,和对对象执⾏xpath的功能xpath就是一种可以根据地址找人的技术 XML Path Language lxml html 通过元素

2020-12-24 22:21:39 248

原创 csv应用

什么是csv?CSV (Comma Separated Values),即逗号分隔值(也称字符分隔值,因为分 隔符可以不是逗号),是⼀种常⽤的⽂本格式,⽤以存储表格数据,包括数字 或者字符。很多程序在处理数据时都会碰到csv这种格式的⽂件。python⾃带了 csv模块,专⻔⽤于处理csv⽂件的读取 csv模块的使⽤写入csv1 通过创建writer对象,主要⽤到2个⽅法。⼀个是writerow,写⼊⼀⾏。另 ⼀个是writerows写⼊多⾏2使⽤DictWriter 可以使⽤字典的⽅式把数据

2020-12-22 13:02:06 308

原创 03-爬虫请求模块

get案例需求 爬取贴吧的数据1 输入爬取贴吧的主题(例如 海贼王)2 输入起始页和终止页(例如 3 - 5)3 把每一页的数据保存到本地(例如 第一页.html第二页.html) 思路https://tieba.baidu.com/f?kw=%E6%B5%B7%E8%B4%BC%E7%8E%8B&pn=0 第一页https://tieba.baidu.com/f?kw=%E6%B5%B7%E8%B4%BC%E7%8E%8B&pn=50 第二页https://

2020-12-12 15:27:49 557

原创 02-爬虫请求模块

urllib.request模块版本python2 :urllib2、urllibpython3 :把urllib和urllib2合并,urllib.request常⽤的⽅法urllib.request.urlopen(“⽹址”) 作⽤ :向⽹站发起⼀个请求并获取响应字节流 = response.read()字符串 = response.read().decode(“utf-8”)urllib.request.Request"⽹址",headers=“字典”) urlopen()不⽀

2020-12-12 14:57:09 83 2

原创 01-爬虫前导知识

爬虫前导知识端口我们想要进⾏数据通讯分⼏步?1.找到对⽅ip2.数据要发送到对⽅指定的应⽤程序上。为了标识这些应⽤程序,所以给这些⽹络应⽤程序都⽤数字进⾏了标识。为了⽅便称呼这个数字,叫做端⼝。这⾥的端⼝我们⼀般都叫做’逻辑端⼝’3.定义通讯规则。这个通讯规则我们⼀般称之为协议通讯协议国际组织定义了通⽤的通信协议TCP/IP协议所谓协议就是指计算机通信⽹络中两台计算机之间进⾏通信所必须共同遵守的规定或规则HTTP⼜叫做超⽂本传输协议(是⼀种通信协议)HTTP它的端⼝是80

2020-12-08 22:18:51 146

原创 7.定时线程

定时线程timethread=threading.Timer(4,go) #线程定时器import timeimport osimport threadingdef go(): time.sleep(5) os.system("notepad")#打开笔记本i=0while True: time.sleep(1) if i%4==0: timethread=threading.Timer(4,go) timethread.

2020-11-11 21:07:21 320

原创 6.condition线程通信与事件

condition线程通信与事件cond=threading.Condition()#线程的条件变量with cond:#with cond 所有代码都要被 with cond 管辖cond.wait()#让线程进行等待cond.notify() # 通知释放函数import threadingimport timecond=threading.Condition()#线程的条件变量def go1(): with cond:#with cond 所有代码都要被 with

2020-11-11 21:04:04 130

原创 5.线程通信

线程通信e=threading.Event()#Event()事件,定义一个事件e.wait()#等待,后续代码不在执行,等待set之后在执行e.clear()#重置 不重置第二次就不会发生等待作用了t.set()#激发事件 是e.setimport threadingimport timeimport osmute=threading.RLock()def goevent(): e=threading.Event()#Event()事件,定义一个事件 def go

2020-11-11 20:52:29 114 1

原创 4.锁定线程匹配数量

锁定线程匹配数量#为了合理的利用资源1000,必须N=10个线程一起执行bar=threading.Barrier(3) #必须凑一对三个才可以一起执行凑不到三个线程就继续等待bar.wait() #线程等待函数import timeimport threading#为了合理的利用资源1000,必须N=10个线程一起执行bar=threading.Barrier(3)#必须凑一对三个才可以一起执行def sever(): print(threading.current

2020-11-11 20:40:54 117

原创 3.信号量限制线程数量

信号量限制线程数量sem=threading.Semaphore(3)#限制线程的数量最大为三个,先运行三个线程在逐个运行单个线程import threadingimport timesem=threading.Semaphore(3)#限制线程的数量最大为三个,先运行三个线程在逐个运行单个线程def gothread(): with sem: for i in range(10): print(threading.current_threa

2020-11-11 20:35:16 390

原创 2.线程锁

锁 Lock()mutex=threading.Lock() # 创建锁mutex.acquire(1) #锁住成功mutex.release() #释放锁 完成任务—》释放被锁住的线程import threadingimport timenum=0mutex=threading.Lock()class Mythread(threading.Thread): def run(self): global num if mutex.a

2020-11-11 20:28:24 181

原创 1.线程的三种创建方式

1.线程的创建方式#第一种多线程方式 借助模块threading"""import win32apiimport threadingdef show(i): win32api.MessageBox(0,"你的账户很危险"+str(i),"来自支付宝的问候",6)#target=show 线程函数,args=()参数 类的构造实现多线程,不考虑通信冲突threading.Thread(target=show,args=(1,)).start()threading.Thread(

2020-11-11 20:19:40 275

原创 小项目---学员管理系统

完成学员管理系统1.最基本的增删改查2.实现模块化3.用面向对象进行编写4.将学员信息进行保存,保存文键student.data面向对象的抽离学生模块 ------- 操作系统模块------主函数模块学生模块class Student(): def __init__(self,name,gender,telphone):#添加外部属性 姓名,性别,电话号码 #实例化属性 self.name=name sel

2020-11-07 10:21:22 253

原创 Python中类继承及super()函数的一些感悟

1.python中继承中父类的调用:a.类名调用法类名直接继承法比较容易理解。就是直接调用父类的名称在子类中对父类的属性进行初始化(l利用父类的类行为进行调用)A.init(self,name,age,froms) 其中A.__init_()这是类方法(类方法直接可以按照类名称调用),当A.__init_()变为————>A._init_(self),变为了实例化的方法(*只有实例才可调用),在A._init_(self)其中self就是子类实例化(按照以下代码所述),self代表的

2020-10-30 21:46:11 390

原创 15—(异常&文件)

课堂笔记1. 异常简介程序在运⾏过程中可能会出现⼀些错误。⽐如: 使⽤了不存在的索引,两个不同类型的数据相加…这些错误我们称之为异常处理异常 程序运⾏时出现异常,⽬的并不是让我们的程序直接终⽌!Python是希望在出现异常时,我们可以编写代码来对异常进⾏处理#语法:try: 代码块(可能出错的代码):出错了就不执行,没有错就执行except: 代码块(出错了就执行的语句,没有出错就不执行)else: 代码(没有出错会执行,出错了不执行,和t

2020-10-24 10:37:29 190

原创 14—(模块)

课堂笔记1.模块模块化指将⼀个完整的程序分解成⼀个个的⼩模块通过将模块组合,来搭建出⼀个完整的程序模块化的有点。⽅便开发。⽅便维护。模块可以复⽤2. 模块的创建在Python当中⼀个py⽂件就是⼀个模块 * 在⼀个模块中引⼊外部模块 import 模块名(模块名就是py⽂件)可以引⼊同⼀个模块多次,但是模块的实例只会创建⼀次import 模块名 as 模块别名在⼀个模块内部都有⼀个__name__。通过它我们可以获取模块的名字如果py⽂件直接运⾏时

2020-10-22 10:33:13 116 1

原创 13.面向对象——(下)

课堂笔记1. 继承简介继承是⾯向对象三⼤特性之⼀通过继承我们可以使⼀个类获取到其他类中的属性和⽅法在定义类时,可以在类名后⾯的括号中指定当前类的⽗类(超类、基类)继承提⾼了类的复⽤性。让类与类之间产⽣了关系。有了这个关系,才有了多态的特性2. ⽅法重写如果在⼦类中有和⽗类同名的⽅法,则通过⼦类实例去调⽤⽅法时,会调⽤⼦类的⽅法⽽不是⽗类的⽅法,这个特点我们称之为⽅法的重写(覆盖)当我们调⽤⼀个对象的⽅法时:。会优先去当前对象中寻找是否具有该⽅法,如果有则直接调⽤。如果没有,则

2020-10-19 10:37:19 177

原创 12.面向对象———(中)

课堂笔记1. 特殊⽅法在类中可以定义⼀些特殊⽅法也称为魔术⽅法特殊⽅法都是形如 xxx()这种形式特殊⽅法不需要我们调⽤,特殊⽅法会在特定时候⾃动调⽤#__名称__ 这种方式的方法就是特殊方法,魔法方法#每创建一个对象,那么解释器就会调用一次__init__魔法方法#__init__解释器自动调用class Person: #类属性 #name="葫芦娃" def __init__(self,name): #实例属性

2020-10-17 09:45:24 98

原创 11.面向对象(上)

课堂笔记1. 面向对象简介Python是一门面向对象的编程语言所谓面向对象的语言,简单理解就是语言中的所有操作都是通过对象来进行的面向过程。面向过程指将我们的程序分解为一个一个步骤,通过对每个步骤的抽象来完成程序。这种编写方式往往只适用于一个功能,如果要实现别的功能,往往复用性比较低。这种编程方式符号人类的思维,编写起来比较容易1.妈妈穿衣服穿鞋出门2.妈妈骑上电动车3.妈妈到超市门口放好电动车4.妈妈买西瓜5.妈妈结账6.妈妈骑电动车回家7.到家孩子吃西瓜

2020-10-15 10:06:45 100

原创 10--函数(下)

课堂笔记1. ⾼阶函数接收函数作为参数,或者将函数作为返回值返回的函数就是⾼阶函数#1.接受函数作为参数,2.或者将函数作为返回值返回的函数就是高阶函数#需求:将一个制定列表中的偶数,保存到一个新的列表中返回传统方法 需要构建一个函数list1=[1,2,3,4,5,6,7,8,9,10]def fn(list1): new_list=[] for i in list1: if i%2==0: new_list.

2020-10-11 16:10:41 247

空空如也

空空如也

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

TA关注的人

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