- 博客(26)
- 收藏
- 关注
原创 第11章-移动端数据抓取
第11章-移动端数据抓取一、移动端前导知识1.1 UIAutomator的介绍1.2 Android四大组件1.3 UIAutomator2的介绍1.4 Adb的安装与应用1.4.1 Adb简介1.4.2 Adb安装与应用二、UIAutomator22.1 U2快速入门一、移动端前导知识1.1 UIAutomator的介绍UIAutomator是google提供的⽤来做安卓⾃动化测试(可以对第三方App进行测试,获取屏幕上任意一个APP的任意一个控件属性,并对其进行任意操作)的⼀个java库,类似se
2021-01-09 14:00:27 1154 1
原创 第10章-MangoDB
第10章-MangoDB一、MongoDB简介1.1 SQL和NoSQL的主要区别1.2MongoDB的优势1.3 MongoDB概念介绍二、MongoDB使用2.1MongoDB在Windows中安装2.2MongoDB运行2.3 MongoDB使用2.4 MongoDB查询操作一、MongoDB简介MongoDB:是⼀个nosql数据库,在处理⼤数据的时候会⽐MySQL更有优势1.1 SQL和NoSQL的主要区别在SQL中层级关系:数据库->表->数据在NoSQL中是:数据库-&g
2020-12-19 16:37:18 1094
原创 第9章-Redis介绍
第9章-Redis介绍一、Redis简介二、Redis的简单应用一、Redis简介Redis是一种⾮关系型数据库,是一个开源的、C语⾔开发的、键值对存储数据的nosql数据库。Rdis是一种缓存型数据库(快速存取),但⽀持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进⾏使⽤Redis使用:(1)官⽹地址:https://redis.io/(2)命令地址:http://doc.redisfans.com/Redis的五⼤数据类型:string/list/set/hash
2020-12-11 23:04:09 261
原创 第8章-Scrapy
第8章-Scrapy一、Scrapy介绍一、Scrapy介绍Scrapy是⼀个为了爬取⽹站数据、提取结构性数据⽽编写的应⽤框架,我们只需要实现少量的代码,就能够实现快速的抓取Scrapy使⽤了Twisted异步⽹络框架,可以使爬虫更快、更强详细内容可参考:https://scrapy-chs.readthedocs.io/zh_CN/1.0/intro/overview.html模块是框架的一部分...
2020-12-06 15:18:17 768
原创 第7章-多任务线程+队列+文件夹创建
第7章-多任务线程+文件夹创建一、线程的实例化方法二、函数方式三、类方式四、资源竞争五、互斥锁和死锁5.1互斥锁5.2 死锁六、Queue线程七、⽣产者和消费者扩展一、线程的实例化方法1.通过函数方式:threading模块中的Thread类有一个target参数,需要指定一个函数对象,创建的函数就是实现子线程的逻辑2.通过类方式自定义一个类并继承threading.Thread类,重写run()方法实现子线程的逻辑3.区别:如果子线程较多,通过面向对象的变成方式便于管理代码;如果子线程较少,可
2020-11-20 20:11:22 671
原创 第6章-selenium的使用+iframe+图形验证码
第6章-selenium的使用一、ajax基本介绍1、ajax2、获取ajax数据的方式二、selenium1、selenium介绍2、PhantomJS常用语法3、selenium的使用3.1快速入门3.2定位元素3.3操作表单元素3.3.1 针对input标签3.3.2 针对select标签3.3.3 针对非select标签3.4行为链一、ajax基本介绍1、ajaxajax可以使⽹⻚实现异步更新,在不重新加载整个⽹⻚的情况下,对⽹⻚的某部分进⾏更新如上图:车次信息在网页源码中不存在,更换查询
2020-11-08 09:40:44 1081
原创 第5章-bs4 + csv+join扩展
第5章-bs4 + csv一、CSV操作说明1.1 写⼊csv⽂件1.2 读取csv⽂件二、bs41、简单方法2. bs4的对象种类3、遍历文档树3.1 contents、children 、descendants3.2 string 、strings、 stripped strings3.3 parent 和 parents3.4 sibling3.5 find和find_all一、CSV操作说明CSV (Comma Separated Values),即逗号分隔值(也称字符分隔值,因为分隔符可以不是
2020-10-25 17:08:03 732
原创 第4章-XPath
第4章-XPath一、瀑布流数据改分页显示二、正则表达式下载网页图片三、XPath一、瀑布流数据改分页显示瀑布流数据:不分页,随鼠标或滚动条下滑自动加载新的内容通过将url中的index改为flip可以实现分页显示hoverURL:鼠标移动过后显示的版本thumbURL、middleURL:也不是我们需要的原版图片objURL:真正的原版图片二、正则表达式下载网页图片三、XPathxm:可扩展标记语言,用于传输和存储数据html:超文本标记语言,显示页面效果xml是⼀种标
2020-10-24 17:02:22 240
原创 第3章-正则表达式
第3章-正则表达式一、正则表达式简介二、普通字符三、元字符一、正则表达式简介1、概念:正则表达式就是一些特殊字符组合在一起的一个字符串。正则表达式是对字符串操作的⼀种逻辑公式,就是⽤事先定义好的⼀些特定字符、及这些特定字符的组合,组成⼀个“规则字符串”,这个“规则字符串”⽤来表达对字符串的⼀种过滤逻辑。二、普通字符普通字符:字⺟、数字、汉字、下划线、以及没有特殊定义的符号。正则表达式中的普通字符,在匹配的时候,只匹配与⾃身相同的⼀个字符。match(pattern, string, flag
2020-10-15 21:43:33 449
原创 第2章-爬虫请求模块
第2章-爬虫请求模块一、urllib.request模块1、urlretrieve()2、urlopen()3、Request()4、parse()一、urllib.request模块1、urlretrieve()urlretrieve(url, filename=None, reporthook=None, data=None)2、urlopen()urlopen(url, data=None, timeout=socket._GLOBAL_DEFAULT_TIMEOUT,
2020-10-10 22:46:48 595 1
原创 第1章-爬虫简介(http请求)
第1章-爬虫简介一、通讯协议二、网络模型三、Http请求与响应3.1 Http通信3.2 Http请求3.3 Http请求方法四、几个概念4.1 GET和POST4.2 URL组成部分4.3 User-Agent ⽤户代理4.4 Refer4.5 状态码4.6 抓包工具五、爬虫介绍一、通讯协议每一个应用程序都有一个独立的标识–端口(逻辑端口号)HTTP:超文本传输协议,默认端口80二、网络模型https=http+ssl,默认端口443SSL:(Secure Socket Layer,安全套
2020-09-29 10:35:36 943
原创 第15节-异常&文件操作
第15节-异常&文件操作一、异常1.1异常简介1.2异常的传播1.3异常对象二、文件操作2.1打开文件2.2文件关闭2.3读取文件一、异常1.1异常简介异常:程序报错即为异常处理异常: 程序运行时出现异常,目的并不是让我们的程序直接终止!Python是希望在出现异常时,我们可以编写代码来对异常进行处理try语句语法:try: 代码块(可能出错的语句)except: 代码块(出错之后的处理方式)else: 代码块(没有出错,后续要执行的语句)1.2异常的
2020-09-09 16:07:59 275
原创 第14节-模块+生成器/迭代器+列表推导式
第14节-模块一、模块简介二、 模块的创建三、模块的使用四、列表推导式五、生成器一、模块简介模块化:指将一个完整的程序分解成一个个的小模块,通过将模块组合,来搭建出一个完整的程序优点:方便开发、维护,可以复用二、 模块的创建在Python当中一个py文件就是一个模块在一个模块中引入外部模块的语法: import 模块名(模块名就是py文件) / import 模块名 as 模块别名可以引入同一个模块多次,但是模块的实例只会创建一次在一个模块内部都有一个__name__,通过它我们可以获取模
2020-09-05 16:05:30 216
原创 第13节 - 面向对象三(继承/多态/类与实例的属性和方法)
第13节 - 面向对象三print(C.__bases__) 获取其全部父类一、继承1、简介class Doctor():name = ‘’age = ‘’def study(self):print(‘读百书,救死扶伤’)calss Teacher():name = ‘’age = ‘’def study(self):print(‘教书育人’)class Person(): #定义一个通用类name = ‘’age = ‘’def run(self):print(
2020-09-03 17:15:49 424
原创 第12节- 面向对象二(魔法方法/封装/装饰器方法)
第12节- 面向对象二一、特殊方法:二、封装2.1 hidden+get+set方式进行声明封装2.2 ‘__属性名’方式进行声明封装2.3 ‘_属性名’方式进行声明封装2.4 封装小结三、装饰器方法一、特殊方法:在类中可以定义一些特殊方法,这些方法形如__xxx__()这种形式,特殊方法(魔术方法) 不需要我们自己去调用,会在特定时候自动调用如上图:p1 = Person() 解释器默认会调用执行一次__init__()方法p1.init() 再次调用__init__()方法二
2020-09-01 17:21:41 260
原创 第11节-面向对象一(类/属性和方法/self参数)
第11节-面向对象一、拓展复习二、对象的简介三、类的简介四、类的使用1、在实例中定义:2、在类中间定义:五、属性和方法六、self参数一、拓展复习可变序列:列表、字典、集合(只能存储不可变对象,却可变序列,因为元素可改变)不可变序列:元组、字符串可变类型:列表、字典、集合不可变类型:元组、字符串、int、bool可变:值可以改变,id不会改变不可变:值不可以变二、对象的简介(1)面向过程的编程方式:符合人类思维,编写容易;但是往往只适用于一个功能,复用性较低(2)面向对象的编程方式:把所
2020-08-29 18:10:32 419
原创 第10节-函数三(高阶函数/匿名函数/闭包/装饰器)
第10节-函数三一、高阶函数二、匿名函数1.过滤器2.匿名函数(lambda函数)三、闭包四、装饰器一、高阶函数满足下列特点之一的函数称之为高阶函数:特点1:接收一个或者多个函数作为参数特点2:将函数作为返回值(不加括号)注意:函数做形参和实参传参时,均不加括号二、匿名函数1.过滤器filter():内嵌的过滤器函数,可以过滤一些可迭代的对象,返回fiter类型的对象(可以通过list强制转换为列表)filter()的两个参数:filter(过滤的条件, 过滤的序列)—满足条件则留下过
2020-08-27 17:10:46 1283
原创 第9节-函数二(返回值/作用域/递归函数)
第9节-函数二一、函数的返回值二、文档字符串三、函数的作用域四、命名空间五、递归函数一、函数的返回值return xxx,返回值可以是函数;当没有return语句,或者只有return且不带返回值时,均返回为Nonereturn后面的语句不再实行,return一旦执行函数自动结束当def()函数再次内嵌def()函数时,通过在需要调用内嵌函数时才使用()可以给使用者更加灵活的选择fn是函数对象,打印fn就是在打印函数对象fn()是函数调用,打印fn()是打印函数返回值二、文档字符串hel
2020-08-25 17:19:22 422
原创 第8节-函数一(参数/传参/拆包)
第8节-函数一一、函数简介二、函数的参数三、函数的传递方式四、实参的类型一、函数简介函数也是一个对象(万物皆对象)函数中保存的代码需要调用时才会执行二、函数的参数定义形参相当于在函数内部声明了变量,但没有赋值arg1,arg2为形参def func(arg1,arg2):codes block实参相当于给形参赋值,需要与形参一一对应注意:函数名必须符合标识符的规范(可以包含字母、数字、下划线但是不能以数字开头)print是函数对象 print()是调用函数三、函数的传递方式
2020-08-22 17:41:18 371
原创 第7节-元组&字典&集合
第7节-元组&字典&集合1.元组2.拆包2.1元组的拆包:2.2列表的拆包:2.3字符串拆包:3.字典3.1字典的定义3.2字典的创建3.3字典的使用3.4浅拷贝&深拷贝1.元组(1)元组不能为空,而且至少还要有1个逗号;当元组不是空元组时,括号可以省略,但是my_tuple=, my_tuple=(,)都会报错(2)元组的访问/提取类似列表,通用操作与列表相同2.拆包2.1元组的拆包:a,b,c = (1,2,3),变量个数需与元素个数一一对应,否则会报错;如果不一
2020-08-20 16:57:54 625
原创 第6节-列表
第六节-列表1.序列2.列表2.1基本概念2.2切片2.3列表运算2.4列表的增删改2.4.1 列表修改:2.4.2 列表增加2.4.3 列表删除2.4.4 列表翻转及排序1.序列序列:一种数据结构(数据结构:计算机中存储数据的方式),用于保存一组有序的数据,所有数据在序列中都有一个唯一的位置(索引),序列中的数据会按照添加的顺序来分配索引索引从0开始可变序列(序列中元素可以改变):列表,字典不可变序列(序列中元素不能改变):字符串,元组注:字符串中的每个字母都可通过类似列表中的索引进行访问和提
2020-08-18 21:42:01 255
原创 第5节-条件控制语句
第五节-条件控制语句1.小贴士2.if语句3.while语句4.break和continue1.小贴士input()也可以类似print打印提示语句,例如:input(‘请输入数字: ’)input()键盘输入的结果是字符串int(input()) 输入float型会报错 (需注意)float(input())输入int型不会报错print(xxx)默认结尾自带换行符,如果要取消可以添加参数end’,例如:print(xxx,end=’’)不换行,结尾为空;print(xxx,end=’
2020-08-15 17:17:26 226
原创 第4节-运算符
第四节-运算符1、算术运算符:除法结果均为浮点型//表示整除,结果不含余数%表示取模,结果为余数**表示幂运算,因子为分数时可为开方根2、赋值运算符:+= (x+= 3 相当于 x = x + 3 )-= (x -= 3 相当于 x= x - 3 )*= (x = 3 相当于 x = x 3 )**= (x **= 3 相当于 x = x ** 3 )/= (x /= 3 相当于 x = x/ 3 )//= (x //= 3 相当于 x = x // 3 )%= (x %= 3 相
2020-08-13 11:24:56 226
原创 第2节-python要点+第三方模块
第二节-python要点1.python解释器2.第三方库或模块的导入3.python编译器4.环境变量1.python解释器环境搭建就是安装Python的解释器,Python的解释器分类:CPython(官⽅我们⽤的就是这个版本) ⽤c语⾔编写的Python解释器PyPy ⽤Python语⾔编写的Python解释器JPython ⽤Java编写的Python解释器2.第三方库或模块的导入方法1.普通安装pip install SomePackage方法2. 换源安装pip inst
2020-08-11 10:50:37 250
原创 第1节-计算机要点
第一节-计算机要点1.内存2.垃圾回收机制1.内存内存地址通过id()获取2.垃圾回收机制Python垃圾回收机制主要以“引用计数为主,分代回收为辅”。引用计数法的原理是每个对象维护一个ob_ref,用来记录当前对象被引用的次数,也就是来追踪到底有多少引用指向了这个对象,当发生以下四种情况的时候,该对象的引用计数器**+1**对象被创建 a=14对象被引用 b=a对象被作为参数,传到函数中 func(a)对象作为一个元素,存储在容器中 List={a,”a”,”b”,2}
2020-08-11 10:23:32 199
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人