- 博客(69)
- 收藏
- 关注
原创 Python实现二分查找法
用Python来实现二分查找1、问题需求输入列表[1,4,4,5,7,7,8,9,9,10]和目标整数1,输出其所在的位置为0,即第1次出现在第0个位置。输入列表[1,2,3,3,4,5,10]和整数目标3,输出2,即第一次出现2的位置。输入列表[1,2,3,4,5,10]和目标整数6,输出-1,即没有出现过6,返回-12、代码实现class Solution: def binarySearch(self, nums, target): return self.search
2021-02-04 21:27:13
478
原创 djang中QuerySet的使用
一、了解QuerySet 在Django的model中,QuerySet是一个重要的的概念,我们在同数据库的所用查询以及更新交互都是通过他来完成的。 django算标准的MVC框架,虽然因为它的模板和View的概念被大家戏称为'MTV'的开发模式,但是道理都是一样的。Model作为MVC模式中的基础层(或数据层),负责整个系统提供数据,因此,我们要先理解它是如何提供数据的。 在Model层中...
2019-08-23 00:52:57
324
原创 爬虫数据提取之json与JsonPath
一、JSON是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写。同时也方便了机器进行解析和生成。适用于进行数据交互的场景,比如网站前台与后台的数据交互1、json简单说就是javascripy 中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构2、(1)字典:对象在js中表示为{}括起来的内容,数据结构为{key:value,key:va...
2019-05-19 14:39:21
997
原创 Python中requests模块里content与text的区别
**一、response.text** 使用response.text时,Requests会基于HTTP响应的文本编码自动解码响应内容, 大多数Unicode字符集都能被无缝的解码**二、response.content**使用response.content时,返回的是服务器响应数据的原始二进制字节流,可以用来保存图片等二进制文件。拓展:1、查看完整的url地址prin...
2019-05-19 14:17:23
946
原创 爬虫过程中遇到的URLError和HTTPError,以及对它们的处理
**一、URLError**1、URLError 产生的原因主要有:没有网络连接 、服务器连接失败、找不到指定的服务器2、requests中的异常在:requests.exceptions异常有哪些:requests.exceptions.ConnectionError#未知的服务器requests.exceptions.ConnectTimeout#连接\读取超时.reques...
2019-05-19 14:03:26
1843
原创 Python爬虫IP代理的设置
**一、使用代理 IP,这是爬虫/反爬虫的第二大招,通常也是最好用的。**很多网站会检测某一段时间某个 IP 的访问次数(通过流量统计,系统日志等),如果访问次数多的不像正常人,它会禁止这个 IP 的访问。所以我们可以设置一些代理服务器,每隔一段时间换一个代理,就算 IP 被禁止,依然可以换个 IP 继续爬取。request 中通过 ProxyHandler 来设置使用代理服务器,下面...
2019-05-19 13:39:14
860
原创 SSL-校验网站证书详解
**一、什么是SSL证书?如何检查网站是否部署了SSL证书?**如果你能使用 https:// 来访问某个网站,就表示此网站是部署了 SSL 证书。一般来讲,如果此网站部署了 SSL 证书,则在需要加密的页面会自动从 http:// 变为 https:// ,如果没有变,你认为此页面应该加密,你也可以尝试直接手动在浏览器地址栏的 http 后面加上一个英文字母“ s ”后回车,如果能正...
2019-05-19 13:10:50
2358
原创 基于Scrapy框架链接MongoDB和Redis数据库
一、首先数据库的选择在我们爬取数少量数据时我们选择存在text文本文件或者json文件里,但是如果在公司中,一些项目动辄上百万数据,这时候我们就需要 将数据存储到数据库中,这时候我们选择MongoDB数据库1、什么是MongoDB ?MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当...
2019-05-19 02:34:39
894
原创 动态HTML的爬取之Selenium&PhantomJS
一、JavaScriptJavaScript 是网络上最常用也是支持者最多的客户端脚本语言。它可以收集 用户的跟踪数据,不需要重载页面直接提交表单,在页面嵌入多媒体文件,甚至运行网页游戏。我们可以在网页源代码的标签里看到,jQuery 是一个十分常见的库,70% 最流行的网站(约 200 万)和约 30% 的其他网站(约2 亿)都在使用。一个网站使用 jQuery 的特征,就是源代码里包...
2019-05-19 01:02:25
240
原创 简单粗暴Xpath的实战运用
一、什么是Xpath?Xpath是一门在XML文档中查找信息的语言,可用来在XML文档中对元素和属性进行遍历。二、Xpath开发工具开源的 XPath 表达式编辑工具:XMLQuire(XML 格式文件可用)Chrome 插件 XPath Helper;Firefox 插件 XPath Checker,不过有时候会出错很坑,不建议过分依赖。三、接下来就是我们具体大操作过程和操作方法在P...
2019-05-15 20:40:30
278
原创 flask项目拆分
一、flask项目拆分的目的1、松耦合,降低代码之间的联系。2、使代码结构更清晰。二、拆分方案1、一份拆成6份2、在拆之前只有一个manage文件,所有东西都在一起如今拆分开为6份。(1)、manage进行全局控制(2)、在项目执行向前进行初始化初始化配置初始化路由初始化第三方(3)、配置文件配置项目所需各种信息(4)、视图函数用来处理业务逻辑,协调模板和模型(5)...
2019-05-04 19:27:08
652
原创 Python爬虫的基本思路
我们都知道当今是“大数据时代”,那么数据从何而来,根据查询有1、企业产生的数据;2、数据平台购买的数据;3、政府/机构公开的数据;4、数据管理咨询公司;还有一种就是跟据市场需求爬虫工程师网络爬取的数据。爬虫的基本思路1、确认抓取的网页首先我们要清楚我们需要什么数据,需要在哪里爬取,然后找到网页,选取一部分种子url,将这些url放入待抓取url的队列,如果有分页的话,我们可以进行规律分...
2019-05-04 13:39:52
2319
原创 HTTP响应状态码参考
1XX:信息100 Continue 服务器仅接收到部分请求,但是一旦服务器并没有拒绝该请求,客户端应该继续发送其余的请求。 101 Switching Protocols 服务器转换协议:服务器将遵从客户的请求转换到另外一种协议。2xx:成功200 OK 请求成功(其后是对 GET 和 POST 请求的应答文档) 201 Created 请求被创建完成,同时新的资源被创建。 202 ...
2019-04-26 19:57:48
281
原创 什么是异常,在程序中为什么抛异常?
一、异常,抛异常通俗的来讲,异常就是程序执行过程中发生的错误,有时候发生错误,整个程序可能会全部终止。这时,就需要抛异常的方法来实现当次执行的程序中断,而不是整个程序全部终止二、几个常见异常1、requests.exceptions.ConnectionError #未知的服务器2、requests.exceptions.ConnectTimeout #连接\读取超时.3、reques...
2019-04-26 19:12:26
2267
原创 HTTP和HTTPS的区别
一、HTTP和HTTPS的区别HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安...
2019-04-25 20:13:50
253
原创 cookie和session的关系
一、Cookie解决了匿名访问的问题,Cookie由服务端下发给用户,保存在用户本地,但是用户可以模拟修改,存在安全隐患,并且用户还可以拒收Cookie;Session 是为了解决Cookie带来的安全问题出现的一些会话控制技术。1、Session存放在服务器端2、在用户登陆访问的时候Session和Cookie结合使用,下发Cookie的时候,下发SessionID,SessionID提交然...
2019-04-25 20:10:58
524
原创 post请求和get请求的区别面试题
**GET请求 和 POST 请求**get和post是 HTTP 请求的两种基本方法,至于区别大致分为以下六个方面加粗样式1、url可见性:get,参数url可见;post,url参数不可见2、数据传输上:get,通过拼接url进行传递参数;post,通过body体传输参数3、缓存性:get请求是可以缓存的post请求不可以缓存4、后退页面的反应get请求页面后退时,...
2019-04-25 19:53:50
3649
原创 虚拟机环境下数据库的读写分离
linux主从备份,读写分离服务端:1、进入opt目录cd /opt2、关闭防火墙和seLinuxsystemctl stop firewalldsetenforce 03、安装Mariadbyum -y install mariadb mariadb-server4、重启mariadb,测试进入systemctl restart mariadbmysql -u root ...
2019-04-20 23:36:30
559
原创 虚拟机linux系统下django环境部署全命令
我们需要的软件有VMware、Xshell 5、Xftp 6首先创建虚拟机进入opt文件夹使用Xftp 6导入python3.6.2安装包、nginx-1.12.2安装包在项目文件夹,删除里面的__pycharm__的配置文件之后就可以无脑在Xshell中依次复制粘贴命令了如果需要安装包的版本不同,请自行修改,还有项目名称,ip地址,端口等不同也要自行修改1、导入依赖包yum -y...
2019-04-19 00:19:27
983
原创 使用django进行前端模板渲染
再对前端模板渲染之前,我们要先掌握以下知识一、1、在django模板系统中,变量要和html尽量分开,HTML和Python是分开的。2、确定表达的形式:记住加载模板的方法 from django.template import Templatetem=Template(string)#字符串形式3、确定表达的内容:(1)使用django响应http方法from django.ht...
2019-04-01 01:05:26
2574
原创 数据库的ORM操作
**一、ORM介绍**Python可以通过pymysql操作mysql数据库,它对开发人员的要求比较高,开发比较繁琐sql命令的问题,不利于数据库的切换;而ORM是数据库映射关系,将Python语句转义成sql语句和数据库交互,这样一来使用更加方便,但是执行效率却会下降。**二、Python的ORM_sqlalchemy**sqlalchemy是python最为常用的三方ORM模...
2019-03-23 16:19:53
1103
原创 mysql数据库视图与触发器
**一、视图介绍**view:当查询的复杂度比较大,多表,多关系,会导致查询语句混乱,不利于sql语句的编写和编写的sql语句的编写和编写的sql语句的可读性。于是mysql推出了视图模式;视图模式是对一个查询的结果进行记录,视图里面只存放语句,不存放结果,类似于虚表。视图优势:1、简单,视图构建了一个虚拟的逻辑表,这个表里面的数据来自于指定的查询,而查询可以是多表联查,在使用的时候,我...
2019-03-18 21:04:29
596
原创 mysql数据库的索引
**索引介绍**查询复杂度:复杂度为1的有字典,测试复杂度采用的是悲观态度,例如查寻1到10中的某个数,就要做好查到10的准备,复杂度用O(n)表示常规查询:一般为顺序查询,按照顺序,查询到结果为结束。对于mysql任意一张表,常规使用查询方法也是顺序查;mysql为了优化查询,提出了索引概念当用户创建索引的时候,mysql首先复制数据,完成一个新的Btree(平衡树)数据结构,mys...
2019-03-18 19:21:26
278
原创 数据库关联查询
一、授权用户授权,我们涉及到了三个对象1、用户名root 2、密码 3、主机localhost创建用户create user qq@localhost;创建用户并添加密码create
2019-03-16 15:45:43
641
原创 Pymysql使用基本流程
一、要求1、要有数据库2、要有Python3、要有pymysql操作流程1、创建数据库链接2、创建游标3、执行命令4、关闭链接import pymysql#pymysql.install_as_MySQLdb() #兼容性命令#创建数据库链接db = pymysql.connect( host = "localhost", #主机ip user = "r...
2019-03-15 22:52:29
1291
原创 数据库语句知识点归纳
一、用户设置用户:使用程序的人或者其它东西。权限:被允许操作的范围。组:针对用户的权限集合,角色。用户管理Mysql 用户默认在mqsql库当中的user表中1、设置用户密码set password for root@localhost=password(“1111”);2、查看用户名密码select user,host from mysql.user\G;库.表形式:跨库进行...
2019-03-15 22:18:50
327
原创 各进制相互转换,以及快速转换的方法
一、各进制介绍十进制用 0~9 的数表示 , 逢 10 进 1 .十六进制由0-9,A-F组成,与10进制的对应关系是:0-9 对应 0-9;A-F对应10-15; 字母不区分大小写。**二进制 **由 0-1组成八进制由 0-7组成二、进制的转换公式...
2019-03-13 21:50:02
5106
原创 HTML5盒模型、浮动和定位
在此之前我们先了解一下块级元素和行内元素的区别一、块级元素1、总是从新的一行开始2、高度、宽度都是可控的3、宽度没有设置时,默认为100%4、块级元素中可以包含块级元素和行内元素二、行内元素1、和其他元素都在一行2、高度、宽度以及内边距都是不可控的3、宽高就是内容的高度,不可以改变4、行内元素只能行内元素,不能包含块级元素三、盒模型1、盒模型简单示意图边框border: ...
2019-03-03 17:54:20
1750
原创 前端html常用标签
中间放入代码段落¥120©color:一般指字体颜色align:对齐方式 lift左对齐 right右对齐 center 居中img src="地址(相对or绝对) ''alt="图片加载不出显示 " 标签列表1、有序列表order list type表示排序类型 start表示从第几个开始一定要数
2019-03-02 22:01:44
759
原创 html5常用选择器
HTML5中常见选择器:一、基本选择器:1、元素选择器:格式:标记名{/声明块/}所有与该标记名匹配的元素,都将应用声明块中的规则2、类选择器:格式:**.**类名{/声明块/}所有class属性为指定类名的元素,都将应用声明块中的规则,其中类型名可以写多个,方便代码复用所有标签都可以有class属性3、id选择器:格式:#id值{/声明块/}属性id为指定值的元素,都将应...
2019-03-02 21:56:28
1897
原创 html小知识点归纳
1、行内元素:span a em strong b i 宽度取决于内容宽度 ,高度取决于内容宽度 , 人为设置不起作用 并排2、 块级元素 :div p hi form table 和行内元素相比要霸道,不并排,100%,人为设置高宽起作用,独成一行3、行内块:input image td 能并排,可以人为设置宽高4、解决图片下间隙问题下间隙原因 : 文字默认...
2019-02-25 08:42:49
381
原创 html表单制作
<form action="" method="post"> <!--type text 文本输入框--> 姓名: <input type="text" name="username" required> <br> 密码: <input type="
2019-02-24 22:48:34
3110
1
原创 python敲代码时容易犯的错误
1、忘记写冒号在 if、elif、else、for、while、class、def 语句后面忘记添加 “:”if spam == 42 print('Hello!')导致:SyntaxError: invalid syntax2、误用 “=” 做等值比较“=” 是赋值操作,而判断两个值是否相等是 “==”if spam = 42:print('Hello!')导致:Synta...
2019-02-20 16:47:23
758
原创 python必备单词
print 输出input 输入str 字符串UTF-8 字符串的一种成熟编码ord() 获取字符串的整数表示形式chr() 把编码转换成对应字符encode() 编码指定为 byteslen() 查看一个合集里包含多少个元素float 浮点数list [ ] 可更改的有序合集tuple( ) 不可修改的有序列表,也叫元组dict python 内置的字典,在别的语言中叫ma...
2019-02-20 09:44:54
9082
3
原创 python内置模块
**一、random模块**1、random()-产生大于0且小于1之间的小数import randomret=random.random()print(ret)2、uniform(a,b)-产生指定范围的随机小数import randomret=random,uniform(1,4)print(ret)3、randint(a,b)-产生a,b范围内的整数,包含开头...
2019-01-27 10:31:35
1287
原创 python协程
协程(又称微线程,纤程。英文名Coroutine):协助程序,线程和进程都是抢占式特点,线程和进程的切换我们是不能参与的;而协程是非抢占式特点,协程也存在着切换,这种切换是由我们用户来控制的;协程主解决的是IO的操作。协程的优点优点1: 协程极高的执行效率。因为子程序切换不是线程切换,而是由程序自身控制,因此,没有线程切换的开销,和多线程比,线程数量越多,协程的性能优势就越明显。优点2: ...
2019-01-27 09:54:24
301
原创 python线程知识点补充
补充上一篇一个知识点一、死锁在多个线程共享资源的时候,如果两个线程分别占有一部分资源,并且同时等待对方的资源,就会造成死锁现象。如果锁之间相互嵌套,就有可能出现死锁。因此尽量不要出现锁之间的嵌套。下方就是一个死锁类型,函数会卡在那不动,无法执行import threading ,timedef test1(num): lock1.acquire() print('tes...
2019-01-26 11:19:16
279
原创 Python多任务&进程&线程
一、多任务1、多任务就是同一时刻多个任务同时执行。例如开车看路的同时操作方向盘,对以电脑来说就是运行多个程序,例如浏览器,QQ,音乐盒同时运行。2、电脑实现多任务的原理例如三个程序同时运行是因为CPU在多个应用程序之间高速切换的结果,CPU在多个程序之间快速往返执行,我们肉眼根本看不到卡顿,导致我们的错觉感觉是同时运行的结果,如果电脑运行的时候会出现卡顿,就是因为CPU切换不过来了。3、...
2019-01-21 23:28:30
397
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人