- 博客(15)
- 收藏
- 关注
原创 多线程爬虫
多线程一、线程是什么?1、线程是进程中包含的执行单元二、它有什么特点?1、1个进程可包含多个线程2、1次只能执行1个线程3、线程锁(资源竞争问题)二、主线程和子线程的执行关系1、主线程会等待子线程结束之后在结束2、join() 等待子线程结束之后,主线程继续执行3、setDaemon() 守护线程,不会等待子线程结束import timeimport threadingdef demo1(): for i in range(5): print('hello
2021-06-08 08:28:26
165
原创 selenium的使用
ajax基本介绍selenium的背景一、我们以前爬取的网页大多数都是一些静态的网页1、何为静态网页?其实就是 我们像一个 网站(url)发起请求 得到响应 那么这些响应的数据都是在网页的源代码当中 解析的动作2、除了静态网页 还有一些网页或者是网站的数据不在这个请求的url 地址当中。那么这些数据有可能是通过ajax技术加载出来的数据二、什么是ajax技术? 前端的技术1、 JSjs是网络上最常用的脚本语言,它可以收集用户的跟踪数据,不需要重载页面直接提交表单,在页面嵌入多媒体文件,甚至运
2021-05-25 16:00:06
309
原创 bs4
bs4简介一、bs4是什么?beautifulsoup4Beautiful Soup 是一个可以从HTML或XML文件中提取数据的网页信息提取二、基本概念Beautiful Soup 是一个可以从HTML或XML文件中提取数据的网页信息提取库三、有什么意义?1、PC端 网站中去爬取数据 百度网站 腾讯的网站随着网站的种类增多,去寻找最适合解决这个网站的技术2、正则: 正则表达式有的时候不太好写 容易出错3、xpath: 记住一些语法4、bs4它的特点 只需要同学们记住一些方法就可以了
2021-05-12 10:13:24
422
原创 xpath&csv
csv一、什么是csv?1、CSV (Comma Separated Values),即逗号分隔值(也称字符分隔值,因为分隔符可以不是逗号),是一种常用的文本格式,用以存储表格数据,包括数字或者字符。很多程序在处理数据时都会碰到csv这种格式的文件。python自带了csv模块,专门用于处理csv文件的读取。二、csv模块的使用一、写入csv文件1 通过创建writer对象,主要用到2个方法。一个是writerow,写入一行。另一个是writerows写入多行2 使用DictWriter 可以使
2021-05-06 08:34:42
235
原创 正则表达式
正则表达式的简介一、概念1、正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。二、正则表达式的应用场景1、 表单验证(例如 : 手机号、邮箱、… )2、 爬虫正则表达式的使用一、在python当中有一个内置的模块re专门实现正则表达式。二、普通字符字母、数字、汉字、下划线、以及没有特殊定义的符号,都是"普通字符"。正则表达式中的普通字符,在匹配的时候,只匹配与自身相同的
2021-04-29 07:56:04
454
原创 第十四节课
多态的简介一、多态是面向对象的三大特性之一。从字面上理解就是多种形态.二、一个对象可以以不同的形态去呈现。三、面向对象的三大特性: 1、封装 确保对象中数据的安全。 2、继承保证了对象的拓展性。 3、多态保证了程序的灵活性。四、python中多态的特点: 1、只关心对象的方法是否重名,不关心对象所属的类型。 2、对象所属的类之间,继承关系可有可无。3、多态的好处可以增加代码的外部调用灵活度,让代码更加通用,兼容性比较强。 4、多态是调用方法的技巧,不会影响到类的内部设计。class A(ob
2021-04-06 20:02:32
110
原创 第十三节课
继承的简介一、继承是面向对象的三大特性之一。二、通过继承我们可以使一个类获取到其他类中的属性和方法三、在定义类时,可以在类名后面的括号中指定当前类的父类(超类,基类)四、继承提高了类的复用性,让类与类之间产生关系。有了这个关系才有了多态的特性class Doctor(): name = '' age = '' def study(self): print('治病救人')class Soldire(): name = '' age =
2021-04-06 19:43:52
170
原创 第十二节课
面向对象简介一、python是一门面向对象语言二、所谓的面向对象语言,简单来说就是语言中所有的操作都是通过对象来进行的。三、面向过程1、面向过程指将我们的程序分解为一个一个步骤,通过每个步骤的抽象来完成程序2、这种编写方式往往只适用于一个功能如果要实现别的功能,往往复用性比较低。3、这种编程方式符合人类的思维,编写起来比较容易。四、面向对象的编程语言,关注的是对象,而不注重过程,对于面向对象一切皆对象。五、面向对象的编程思想,将所以的功能统一保存在对应的对象中,要使用某个功能直接找到对应的对
2021-04-06 19:42:36
144
原创 第十一节课
装饰器的引入一、我们可以通过修改函数中的代码完成需要,但是会产生一下这些问题。1、如果修改的函数多会比较麻烦。2、不方便后期维护。3、这样做会违反开闭原则(ocp):程序的设计,要求开放对程序的 扩展,关闭对程序的修改。def fun(fn, *args, **kwargs): #对其他函数拓展功能的方法: 定义一个功能函数让这个函数在目标函数里面运行并调用它 print('程序开始执行') r = fn(*args, **kwargs) #使用不定长参数来解决 pri
2021-04-06 17:57:44
100
原创 第十节课
递归函数一、递归是解决问题的一种方式,它的整体思想是,将一个小问题分解成一个个小问题直到无法分解后再去解决问题。二、基线条件:问题可以被分解为最小问题,当满足基线条件时递归不再执行三、递归条件:可以将问题继续分解的条件# 求取10的阶乘# 1 = 1*1# 2 = 1*2# 3 = 1*2*n = 1for i in range(1, 11): n *= iprint(n) # 使用for循环来解题。def fun(n): r = 1 for i in ra
2021-03-24 08:21:51
187
1
原创 第八节课
深拷贝和浅拷贝一 、copy()是对数据进行浅拷贝二、deepcopy()是对数据进行深拷贝#copy#dict1 = { # "a":1, # "b":2#}#dict2 ={ # "a":1, # "b":2#}#print(id(dict1),id(dict2))#当对象属于不可变类型时id不会改变,#a = 'ab'#b = 'ab'#print(id(a),id(b))#方法一、#dict2 = dict1.copy()#浅拷贝除了id不同其他都相
2021-03-20 09:54:32
216
5
原创 第七节课
for循环遍历一、for循环1、遍历容器内的数据。 list1 =[1,2,3,4,5,6,] 语法 for i in list1: for临时变量in序列(遍历的规则) print(i) 代码块2、注意:for循环的代码块会循环多次,序列中元素有多少个就执行多少次,每执行一次就会将序列中的一个元素赋值给变量,使用我们要通过变量来获取列表中的元素。range函数
2021-03-17 15:23:32
231
2
原创 第六节课
序列(sequence)一-序列的基本概念1、序列是python中一种基本的数据结构,序列用于保存一组有序的数据’序列中所有的数据都一个唯一的位置(索引)并且序列中的数据会根据添加的顺序来分配索引。2、数据结构指计算机中存储数据的一种方式。二、序列的分类1、可变序列:(序列中的元素可以改变)比如列表(list)2、不可变序列:(序列中的元素不可以改变)比如字符串(str)、元组(tuple).列表(list)一、列表的作用1、列表是python中的一个对象``2、列表中可以储蓄多个有序
2021-03-15 10:10:41
272
原创 第五节课 : if语句
一、if条件控制语句1、执行过程中对条件进行判断如果为True则继续执行if语句后面的代码,若为False则不执行。2、语句:if条件表达式代码块2.1代码块中保存着一组代码执行或不执行。2.2代码块以缩进开始一直到代码恢复到之前的缩进级别时结束2.3代码块是为代码分组的一种机制。input()函数1、input()函数有阻塞特性。2、输入函数要求用户输入并且在输入后要回车才能继续执行。3、注意:input()输入的数据类型是字符串。4、用户输入完内容后,所输入的内容会以返回值的形式返
2021-03-12 16:47:14
330
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人