摘要: 3.10 关于爬取时,网页编码不是utf-8,而导致 lxml 输出中文时乱码的解决办法 用requests.get拿到response,response.content是bytes的内容,所以可以直接传给 lxml, body = etree.HTML(response.content)就不会有乱 阅读全文
posted @ 2017-03-10 11:12 Nanrou 阅读(2945) 评论(0) 推荐(0) 编辑
摘要: python协程通过yeild from来实现,yeild from不但可以换回一个值,还可以接收传进来的值 n = yield from r 实际上是执行了两步,先是 n=yield from,就是n等于了传进来的值,然后处理,循环完一圈后,又通过yield把r传到外面 在3.5以后,引入了awa 阅读全文
posted @ 2017-02-23 23:44 Nanrou 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 首先,学会了如何创建一个新的包。就是在文件夹下创建__init__.py文件,就是在其他地方导入这个包了。 阅读全文
posted @ 2016-12-01 21:15 Nanrou 阅读(144) 评论(0) 推荐(0) 编辑
摘要: class 是类,class中的def是方法,i = class(),i是实例 @classmethod 装饰的def方法就是在类中运行,而不在实例中运行 @staticmethod装饰的def方法,就等于是一个独立的def,不需要先创造实例 @property 装饰的方法,就是将该方法变成属性 阅读全文
posted @ 2016-11-29 15:58 Nanrou 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 在<head>的<style>中定义样式,有#号,比如#header就是定义一种名为header的样式,后面用id=header来调用;而无#号,比如直接就是header,那后面直接使用,就等于用了之前的定义。 <!DOCTYPE html> 这是网页文档类型的类型 阅读全文
posted @ 2016-11-24 12:51 Nanrou 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 装饰器的简单应用还是明白的,但是要理解这两个递归算法。 关于函数的元数据,如:f.__name__,指的是def时指定的名字;f.__doc__,指的是函数文档字符串;f.__moudle__,指的是函数所属模块;f.__default__,指的是函数默认值;f.__dict__,指的是属性字典;f 阅读全文
posted @ 2016-11-20 13:49 Nanrou 阅读(250) 评论(0) 推荐(0) 编辑
摘要: 关于多线程操作。 对于IO操作,如访问网站,写入磁盘这种需要时间等待响应的操作,多个cpu也几乎不能提高效率。 对于CPU密集型操作,如这个格式转换,可以通过多个cpu同时去进行。 但是对于python来讲,python存在GIL全局解释器的锁,导致只有一个python线程能被解释器接收。所以等于p 阅读全文
posted @ 2016-11-13 23:51 Nanrou 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 如何派生内置不可变类型并修改实例化行为。 个人理解,如何派生出自己想要的类。 类的创建是在__new__中实现的,所以要修改new。 关于使用__slots__,在创建class时,定义slots属性,声明实例属性列表,这就等于关闭掉__dict__属性,dict的作用是允许对class进行动态添加 阅读全文
posted @ 2016-11-12 21:06 Nanrou 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 关于对csv文件的操作。 python标准库中有csv的库,使用非常方便。 关于对json文件的操作。 python标准库中也有json的库,操作也很方便。 关于对xml文件的操作,同样也是用标准库中的xml库来操作。 将csv文件写入xml的小实例 由于ElementTree自带的写入方法不能对格 阅读全文
posted @ 2016-11-11 22:49 Nanrou 阅读(272) 评论(0) 推荐(0) 编辑
摘要: 关于普通文本文件的读写 python2.7中,未注明的字符都是以acsii来编码的,而要让字符能够通用,必须声明为unicode。 s=u'你好',s.encode('utf8')就是指用utf8来进行编码,同样s.decode('utf8)就是用utf8来解码。 实例操作 文本里面存储正确。第一个 阅读全文
posted @ 2016-11-09 19:06 Nanrou 阅读(179) 评论(0) 推荐(0) 编辑