【摘要】本节中,我们看一下正则表达式的相关用法。正则表达式是处理字符串的强大工具,它有自己特定的语法结构,有了它,实现字符串的检索、替换、匹配验证都不在话下。当然,对于爬虫来说,有了它,从HTML里提取想要的信息就非常方便了。1.实例引入说了这么多,可能我们对它到底是个什么还是比较模糊,下面就用几个实例来看一下正则表达式的用法。打开开源中国提供的正则表达式测试工具http://tool.oschina.net/regex/,输入待匹配的文本,然后选择常用的
系统 2019-09-27 17:48:57 2049
本周的PyCoder'sWeekly上分享了一篇小文章,它里面提到的冷知识很有意思,我稍作补充,分享给大家。它提到的部分问题,读者们可以先思考下:若两个元组相等,即a==b且aisb,那么相同索引的元素(如a[0]、b[0])是否必然相等呢?若两个对象的hash结果相等,即hash(a)==hash(b),那么它们是否必然相等呢?答案当然都为否(不然就不叫冷知识了),大家可以先尝试回答一下,然后再往下看。-----思考分割线-----好了,先来看看第一个问
系统 2019-09-27 17:48:26 2049
阅读更多全文阅读6分钟我在之前写过一篇「Python新手常见的几个问题及工具推荐」说过新手往往没有注意环境隔离,导致Python项目包与包之间冲突。并且Python2与3代码执行有问题等等。鉴于此我今天给大家聊聊关于Python环境隔离问题以及如何进行隔离。Virtualenv我们都知道Python开发项目很容易,项目也经得起工业级别考验。很多开发者都会习惯用Python开发项目,但是由于我们每个项目情况都有些不一样。比如今天可能用的是Django1.8,
系统 2019-09-27 17:48:20 2049
本文实例讲述了Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法。分享给大家供大家参考,具体如下:做个笔记(python3.6,django2.0)defget_url(outer_order_id):refundId=get_refundId(outer_order_id)host_url='http://test.shequ.com/order/agreeRefund?'reason_list=['商品已售完','重复订单','没
系统 2019-09-27 17:48:09 2049
写python协程时使用gevent模块和queue模块可以大大提高爬虫速度。在同时爬取多个网站时,原来用for循环一个网站一个网站按循序顺序爬,就像先烧饭后烧菜,两个步骤异步进行。使用多协程可以让爬虫自己选择爬取顺序,就像边烧饭边烧菜,两个步骤同步进行,速度自然快了。不多说了,来看下代码吧:fromgeventimportmonkeymonkey.patch_all()#打上多协程布丁,下面的程序就可以执行多协程了importrequests,geven
系统 2019-09-27 17:47:59 2049
本系列Python文章基于Python3版本,关于python的安装和配置自行百度,这里不做详细介绍。接下来将介绍Python基础——数据类型和变量。数据类型在Python中,能够直接处理的数据类型有以下几种:整型Python中可以处理任意大的整数,包括负整数。支持二进制(如0b100,换算成十进制是4)、八进制(0o100,换算成十进制是64)、十六进制(0x100,换算成十进制为256)的表示法。浮点型浮点数也就是小数,之所以称为浮点数,是因为按照科学
系统 2019-09-27 17:47:56 2049
pickle包的dump函数和load函数分别实现了数据的序列化和反序列化。一、dump()方法pickle.dump(obj,file,[,protocol])注释:序列化对象,将对象obj保存到文件file中去。参数protocol是序列化模式,默认是0(ASCII协议,表示以文本的形式进行序列化),protocol的值还可以是1和2(1和2表示以二进制的形式进行序列化。其中,1是老式的二进制协议;2是新二进制协议)。file表示保存到的类文件对象,f
系统 2019-09-27 17:47:49 2049
我们在写代码的过程中,会经常使用到for循环,去循环列表,那么如果我们拿到一个类型为str的列表,对它进行for循环,结果看下面的代码和图:str_list=str(['a','b','c'])forrowinstr_list:print(row)结果:Python字符串类型列表转换成真正列表类型那么for循环就把str类型的列表的每一个字符都一个一个的循环的打印出来,而这个结果并不是我们想要的,那么如何解决这个问题?,使用到第三方模块,看下面的代码fro
系统 2019-09-27 17:47:49 2049
前言其实有一个模块也支持执行系统命令,那个模块就是sys.system,但他执行系统命令会直接通过主进程去执行命令,那假如,该命令的执行需要耗费一个小时,那么主进程会卡一个小时,而不会去干别的事,这样就会导致程序的运行效率低下。如果由subprocess去执行系统命令的时候并不会让主进程去执行,而是主进程会开辟出一个子进程去执行,并不会影响到主进程的运行,主进程该干嘛就干嘛,那么又有个问题,大家都知道进程之间的内存空间是独立的,也就是说进程之间是不能相互访
系统 2019-09-27 17:47:47 2049
radians()方法把角度转化为弧度角x。语法以下是radians()方法的语法:radians(x)注意:此函数是无法直接访问的,所以我们需要导入math模块,然后需要用math的静态对象来调用这个函数。参数x--这必须是一个数值。返回值此方法返回一个角度的弧度值。例子下面的示例演示radians()方法的使用。#!/usr/bin/pythonimportmathprint"radians(3):",math.radians(3)print"radi
系统 2019-09-27 17:47:26 2049
发送端代码:#!/usr/bin/python#-*-coding:UTF-8-*-importsocketimportstructraw_socket=socket.socket(socket.PF_PACKET,socket.SOCK_RAW,socket.htons(0x1234))raw_socket.bind(("eth0",0))packet=struct.pack("!6s6sH","\xff\xff\xff\xff\xff\xff","\x
系统 2019-09-27 17:46:50 2049
并发与锁多个线程共享数据的时候,如果数据不进行保护,那么可能出现数据不一致现象,使用锁,信号量、条件锁互斥锁1.互斥锁,是使用一把锁把代码保护起来,以牺牲性能换取代码的安全性,那么Rlock后必须要relase解锁不然将会失去多线程程序的优势2.互斥锁的基本使用规则:importthreading#声明互斥锁lock=threading.Rlock();defhandle(sid):#功能实现代码lock.acquire()#加锁#writercodein
系统 2019-09-27 17:45:51 2049
方法在Python中是如何工作的方法就是一个函数,它作为一个类属性而存在,你可以用如下方式来声明、访问一个函数:>>>classPizza(object):...def__init__(self,size):...self.size=size...defget_size(self):...returnself.size...>>>Pizza.get_sizePython在告诉你,属性_get_size是类Pizza的一个未绑定方法。这是什么意思呢?很快我们
系统 2019-09-27 17:45:43 2049
我们这次实现的命令行计算器,支持加减乘除、括号、浮点数、负数,以及查看历史和退出功能。主要的思路:read-parse-print-loop。read阶段是指读取用户在提示符(cal>)之后输入的字符串。parse阶段包括:将用户输入的字符串分割成单个对象比如:符号+,或者数字1.2。其次将中缀表达式转化后缀表达式,接下来计算后缀表达式的数值。print阶段指的是将parse阶段的数值打印在终端上。loop阶段是指重复上述操作,除非用户输入exit符号或者
系统 2019-09-27 17:45:27 2049
选择了脚本语言就要忍受其速度,这句话在某种程度上说明了python作为脚本的一个不足之处,那就是执行效率和性能不够理想,特别是在performance较差的机器上,因此有必要进行一定的代码优化来提高程序的执行效率。如何进行Python性能优化,是本文探讨的主要问题。本文会涉及常见的代码优化方法,性能优化工具的使用以及如何诊断代码的性能瓶颈等内容,希望可以给Python开发人员一定的参考。代码优化能够让程序运行更快,它是在不改变程序运行结果的情况下使得程序的
系统 2019-09-27 17:38:10 2049