自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 Python爬虫系列(七):提高解析效率

如果仅仅因为想要查找文档中的<a>标签而将整片文档进行解析,实在是浪费内存和时间.最快的方法是从一开始就把<a>标签以外的东西都忽略掉. SoupStrainer 类可以定义文档的某段内容,这样搜索文档时就不必先解析整篇文档,只会解析在 SoupStrainer 中定义过的文档. 创建一个 SoupStrainer 对象并作为 parse_only 参数给 Bea...

2017-10-24 22:34:00 170

转载 Python爬虫系列(六):搜索文档树

今天早上,写的东西掉了。这个烂知乎,有bug,说了自动保存草稿,其实并没有保存。无语今晚,我们将继续讨论如何分析html文档。1.字符串#直接找元素soup.find_all('b')2.正则表达式#通过正则找import refor tag in soup.find_all(re.compile("^b")):print(tag.name)3.列表找a...

2017-10-24 22:24:00 179

转载 Python爬虫系列(五):分析HTML结构

今晚,被烦死了。9点多才下班,就想回来看书学习,结果被唠叨唠叨个小时,我不断喊不要和我聊天了,还反复说。我只想安安静静看看书,学习学习,全世界都不要打扰我接着上一个讨论,我们今晚要分析HTML结构了1.获取元素html_doc = """<html><head><title>The Dormouse's story</title&gt...

2017-10-23 23:05:00 301

转载 Python爬虫系列(四):Beautiful Soup解析HTML之把HTML转成Python对象

在前几篇文章,我们学会了如何获取html文档内容,就是从url下载网页。今天开始,我们将讨论如何将html转成python对象,用python代码对文档进行分析。(牛小妹在学校折腾了好几天,也没把html文档给分析出来。接下来的几篇文章,你可就要好好看了)Beautiful Soup将复杂HTML文档转换成一个复杂的树形结构,每个节点都是Python对象,所有对象可以归纳为4种:...

2017-10-20 08:32:00 892

转载 Python爬虫系列(三):requests高级耍法

昨天,我们更多的讨论了request的基础API,让我们对它有了基础的认知。学会上一课程,我们已经能写点基本的爬虫了。但是还不够,因为,很多站点是需要登录的,在站点的各个请求之间,是需要保持回话状态的,有的站点还需要证书验证,等等这一系列的问题,我们将在今天这一环节,加以讨论。1.会话对象会话:session,就是你点进这个站点后,由浏览器与服务器之间保持的一次连接。这次连接里面...

2017-10-19 21:22:00 178

转载 Python爬虫系列(二):requests基础

1.发送请求:import requests# 获取数据#r是一个 response 对象。包含请求返回的内容r = requests.get('https://github.com/timeline.json')print(r.content)打印结果:b'{"message":"Hello there, wayfaring stranger. If you\xe2\x80...

2017-10-18 22:27:00 187

转载 Python爬虫系列(一):从零开始,安装环境

在上一个系列,我们学会使用rabbitmq。本来接着是把公司的celery分享出来,但是定睛一看,celery4.0已经不再支持Windows。公司也逐步放弃了服役多年的celery项目。恰好,公司找人进来新人也要给他们培训爬虫。接下来,我们就从零开始,学习爬虫,目标是能掌握到执行js,反爬虫这个水平,做一般的商业爬虫没问题。牛小妹,接下来要仔细看了哦。软件环境:python 3...

2017-10-18 22:26:00 168

转载 Python操作rabbitmq系列(六):进行RPC调用

此刻,我们已经进入第6章,是官方的最后一个环节,但是,并非本系列的最后一个环节。因为在实战中还有一些经验教训,并没体现出来。由于马上要给同事没培训celery了。我也来不及写太多。等后面,我们再慢慢补充。RPC:是远程过程调用。百度写了一大堆。此刻,我们简单点说:比如,我们在本地的代码中调用一个函数,那么这个函数不一定有返回值,但一定有返回。若是在分布式环境中,香我们前几章的例子,发...

2017-10-13 22:43:00 104

转载 Python操作rabbitmq系列(五):根据主题分配消息

接着上一章,使用exchange_type='direct'进行消息传递。这样消息会完全匹配后发送到对应的接收端。现在我们想干这样一件事:C1获取消息中包含:orange内容的消息,并且消息是由3个单词组成的。C2获取消息中包含:rabbit内容的消息,并且也是3个单词组成,同时,包含lazy开头的消息,这个消息长度>2在下图中,quick.orange.ra...

2017-10-13 21:57:00 113

转载 Python操作rabbitmq系列(四):根据类型订阅消息

在上一章中,所有的接收端获取的所有的消息。这一章,我们将讨论,一些消息,仍然发送给所有接收端。其中,某个接收端,只对其中某些消息感兴趣,它只想接收这一部分消息。如下图:C1,只对error感兴趣,C2对其他三种甚至对所有都感兴趣,我们该怎么搞呢?发送端:import pikaimport sysconnection = pika.BlockingConnection(pika...

2017-10-10 23:14:00 133

转载 Python操作rabbitmq系列(三):多个接收端消费消息

接着上一章。这一章,我们要将同一个消息发给多个客户端。这就是发布订阅模式。直接看代码:发送端:import pikaimport sysconnection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))channel = connection.channel()# 原则上,消息,只能有...

2017-10-10 22:35:00 483

转载 Python操作rabbitmq系列(二):多个接收端消费消息

今天,我们要逐步开始讨论rabbitmq稍微高级点的耍法了。了解这一步,对我们设计高并发的系统非常有用。当然,还可以使用kafka。不过还是算了,有几个硬性条件不支持,还是用rabbitmq吧。循环分发:启动一个发送端往队列发消息,此时启动多个接收端。发送的消息会对接收端一个一个挨着发送消息。如图:这就是默认情况下,多个接收端轮流消费消息。队列发送给消费端后,就立即...

2017-10-10 22:01:00 875

转载 Python操作rabbitmq系列(一)

从本文开始,接下来的内容,我们将讨论rabbitmq的相关功能。我的这些文章,最终是要实现一个项目(具体是什么暂不透露)。前面每一篇,都是在为这个系统做准备。rabbitmq,是我们这个项目的关键部分之一。所以牛小妹,这个系列,请务必搞懂rabbitmq是怎么回事,并知道,该如何操作。在这一篇文章里,我们知道rabbitmq简单逻辑即可。生产消息:消费消息:就跟Q...

2017-10-09 23:47:00 143

转载 Python操作Redis

昨天,我们讨论了python如何连接redis。今天我们要学习如何用python操作redis的数据。这里,再补充一下。redis是key-value形式的数据库。可以存储多种格式的数据。今天,我们就是尝试下,这些常用的api。1.设置数据:r = redis.Redis(host='127.0.0.1', port=6379)#若是key存在,就修改,不存在,就添加...

2017-09-28 00:17:00 117

转载 Python连接Redis

Redis: 是一个高性能的key-value数据库。简单来说就是:当你使用关系型数据库、文件或者其他介质存东西,性能不好反应慢,这个时候就要拿个东西做缓存。同类产品有好几种,目前比较流行,在我司进行商用的就是这个。目前,这玩意在集群状态下,为我们的百万级并发提供良好的支持。今天,我们就来简单聊聊,如何用python操作redis。牛小妹,把这个放进你的毕业设计,又能锦上添花...

2017-09-26 22:54:00 152

转载 django 前后台传递数据

前几天,我们完成了用django orm对数据进行操作。接下来,我们要把数据从后台放到前台。1.用get方式传值get:就是在URL拼接字符串,在后台,用request.get方式取2.用post方式传值前台:<form method="post" action="/polls/post/">{% csrf_token %}<input id="...

2017-09-26 21:39:00 97

转载 Django ORM操作数据库常用API

昨天晚上,我们完成了一个简单的实例来对数据库表进行操作。今天,我们要熟悉更多的API,实现更复杂的功能。这一步完成了,我们对小型数据的操作问题也就不大了。现在,我们还是参考django官方文档,来进行学习1.构造数据表把以下内容,拷贝到你的朋友charm中,然后执行migrate命令class Blog(models.Model):name = models.CharFi...

2017-09-26 21:38:00 98

转载 django连接mysql

这个问题已经出现了数次。每次带新人,会问,带老司机也会问。上周末,牛小妹也在问。今天早上,我就把这个操作过程总结下。修改数据库连接首先,在settings.py文件中,是不是有下图这么一段内容:建立django工程的时候是自动创建的。这个是告诉你,django默认连接sqllite。ENGINE:是指连接数据库驱动的名称,NAME是指要连接什么库,什么文件。实际上,ENG...

2017-09-26 21:34:00 58

转载 django 利用ORM对单表进行增删改查

牛小妹上周末,一直在尝试如何把数据库的数据弄到界面上。毕竟是新手,搞不出来,文档也看不懂。不过没关系,才刚上大学。今晚我们就来解释下,要把数据搞到界面的第一步。先把数据放到库里,然后再把数据从库里拿出来。以下内容,参考django官方文档。1.创建MODEL这里和官方文档一致。直接拷出来,放到一个叫models的py文件里面。若是你的项目中没有,一定不要觉得无处写代码...

2017-09-26 21:34:00 80

转载 django创建app

前几天,????小妹在学习django,不晓得如何创建app。今天记录下首先,你得创建一个django工程,用pycharm然后会有这样的项目结构:然后你在pycharm底部:输入以上命令,就会得到:此时,在settings.py中加入:APP名称在urls.py中加入:app的urlsOK,你就可以访问你的APP了,是不是很简单转载于:...

2017-09-26 21:33:00 91

转载 用ASP.NET MVC5 +SQLSERVER2014搭建多层架构的数据库管理系统

用http://ASP.NETMVC5 +SQLSERVER2014搭建多层架构的数据库管理系统背景:前段时间,给一家公司做外包(就是图标是朵菊花那家)。为了尽快实现交付,网上四处寻找适合中小型企业框架。花了几天无果,只在github上找了个(貌似作者还要收费),把前端半改造,后端彻底改造(最终版本全部没有使用github的代码)。现在,把这段时间的成果最初版本贡献出来。若是有类似...

2017-09-26 21:32:00 189

转载 Windows下Python3.6.2+Django-1.11.5+httpd-2.4.27-win64-VC14部署网站

最近项目组正在上python+django。现在将部署过程总结下,相关文件也备份下,面得每次都要弄半天。网上很多不靠谱的做法,让我反复试错,浪费不少时间。原材料:Python3.6.2httpd-2.4.27-win64-VC14mod_wsgi-4.5.17+ap24vc14-cp36-cp36m-win_amd64.whlDjango-1.11.5说明:由...

2017-09-26 21:32:00 130

转载 NumPy学习2:基本运算

数组相减:a = array([20, 30, 40, 50])print ab = arange(4)print bc = a-bprint c结果:[20 30 40 50][0 1 2 3][20 29 38 47]转载于:https://www.cnblogs.com/zijiyanxi/p/6128864.html

2016-12-03 15:33:00 54

转载 NumPy学习2:创建数组

1.使用array创建数组b = array([2, 3, 4])print bprint b.dtype2.把序列转化为数组b = array( [ (1.5,2,3), (4,5,6) ] )print b3.函数function创建一个全是0的数组,函数ones创建一个全1的数组,函数empty创建一个内容随机并且依赖与内存状态的数组。默认创建的数组类型(...

2016-12-03 15:14:00 67

转载 NumPy学习1:基本概念

NumPy的数组类被称作ndarray。通常被称作数组。注意numpy.array和标准Python库类array.array并不相同,后者只处理一维数组和提供少量功能。更多重要ndarray对象属性有:ndarray.ndim数组轴的个数,在python的世界中,轴的个数被称作秩ndarray.shape数组的维度。这是一个指示数组在每个维度上大小的...

2016-12-03 14:57:00 51

转载 JS入门系列(2)-原型-实例属性

下面的例子中,在构造器内部定义了like,然后再原型上也定义了like。通过下面的测试表明:在构造器内部创建的实例方法会阻挡原型上定义的同名方法初始化操作的优先级如下:首先,通过原型给对象实例添加属性在构造器内部,给对象实例添加的属性在构造器内部的绑定操作优先级用于都高于在原型上的绑定操作的优先级。因为构造器的this上下文指向的是实例自身,所以...

2016-06-16 07:00:00 44

转载 JS入门系列(1)-原型-函数原型

实例1:首先定义一个Persion类或者说是函数var p1 = Persion();:表示,作为普通函数调用var p2 = new Persion();:表示,作为构造器调用创建函数之后,在其原型上添加方法f1以下代码证明:作为函数调用,因为没有返回值,所以console.log(p1);显示undefined;做为构造器调用,则创建了一个Persion的实例...

2016-06-14 07:21:00 63

转载 SQL基础系列(4)-性能优化建议

10.1 连接查询表的顺序问题SQLSERVER的解析器按照从右到左的顺序处理FROM子句中的表名,因此FROM子句中写在最后的表(基础表driving table)将被最先处理,在FROM子句中包含多个表的情况下,必须选择记录条数最少的表作为基础表,当SQLSERVER处理多个表时,会运用排序及合并的方式连接它们。首先,扫描第一个表(FROM子句中最后的那个表)并对记录进行排...

2016-06-09 15:39:00 53

转载 SQL基础系列(3)-变量、函数、存储过程等

1. 变量 1 定义变量 2 3 DECLARE @a INT 4 5 赋值 6 7 SET @a=1 8 9 PRINT @a10 11 DECLARE @name NVARCHAR(30)12 13 --select 赋值14 15 SELECT @name='zcx'16 17 PRINT @na...

2016-06-09 14:23:00 97

转载 SQL基础系列(2)-内置函数--转载w3school

1. 日期函数Mssql:SELECT GETDATE()返回当前日期和时间SELECT DATEPART(yyyy,OrderDate) AS OrderYear,DATEPART(mm,OrderDate) AS OrderMonth,DATEPART(dd,OrderDate) AS OrderDayFROM Orders1WHERE O...

2016-06-09 10:03:00 82

转载 SQL基础系列(1)-基本语法--转载w3school

1. 建原始表USE [Northwind]GO/****** Object: Table [dbo].[Persons] Script Date: 2016/6/8 7:31:57 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE TABLE [db...

2016-06-09 10:02:00 109

转载 Django模拟ASP.NET MVC 自动匹配路由(转载)

项目结构操作步骤1.创建项目结构如上图2.在myapp目录下创建urls文件,代码:1 from django.conf.urls import patterns, url2 3 from untitled1.myapp.dispatcher import start4 5 urlpatterns = patterns('',6 ...

2016-06-05 18:05:00 72

转载 Struts2-学习笔记系列(15)-ajax支持和JSON

7.1stream类型的result使用stream就无需jsp页面,直接在action想浏览者生成指定的响应 1 2 3 @Override 4 public java.lang.String execute() throws Exception { 5 stream = name.equals("zcx") ? new ByteArrayIn...

2016-06-04 22:39:00 60

转载 Struts2-学习笔记系列(14)-拦截器

6.1对action 的拦截自定义拦截器: 1 public class MyInterceptor extends AbstractInterceptor { 2 3 private String name; 4 5 6 @Override 7 public String intercept(ActionInvoc...

2016-06-04 22:38:00 83

转载 Struts2-学习笔记系列(13)-类型转换异常和校验器

Struts2框架有默认的类型转换错误拦截机制,该配置在struts-default.xml中,名叫conversionError,但是想使用需要继承ActionSupport.默认的错误提示信息是英语的,若是想自定义,需要修改国际化文件:mess.properties:xwork.default.invalid.fieldvalue={0}字段类型转换失败!对于对象的字...

2016-06-04 22:37:00 80

转载 Struts2-学习笔记系列(12)-set集合

3.1编写类型转换器 只需实现 converFromString方法 1 public class UserConvert extends StrutsTypeConverter { 2 @Override 3 public Object convertFromString(Map map, String[] strings, Class aClass)...

2016-06-04 22:36:00 101

转载 Struts2-学习笔记系列(11)-使用StrutsTypeConverter

1 public class UserConvert extends StrutsTypeConverter { 2 @Override 3 public Object convertFromString(Map map, String[] strings, Class aClass) { 4 User user = new User()...

2016-06-04 22:35:00 100

转载 Struts2-学习笔记系列(10)-自定义类型转换

注意name=user和对应action中的实例名称一致这些代码是写在HTML文件中的1 <s:form action="login">2 <s:textfield name="user" label="用户"/>3 <tr>4 <td colspan="2"><s:submit...

2016-06-04 22:34:00 90

转载 Struts2-学习笔记系列(9)-OGNL类型转换和类型绑定

HTML:1 <s:form action="login">2 <s:textfield name="user.name" label="用户名"></s:textfield>3 <s:textfield name="user.pwd" label="密码"></s:textfield>4 ...

2016-06-04 22:28:00 58

转载 Struts2-学习笔记系列(8)-异常处理

后台抛出自定义异常 1 public String execute() throws Exception { 2 3 if (getUser().equalsIgnoreCase("user")) 4 { 5 throw new ZcxException("自定义异常"); 6 } 7 if (get...

2016-06-04 22:26:00 50

空空如也

空空如也

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

TA关注的人

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