随笔分类 -  Python

摘要:解析库 解析器 | 使用方法 | 优势 | 劣势 | | | Python标准库 | BeautifulSoup(html, 'html.parser') | 速度适中,容错能力强 | 老版本python容错能力差 lxml HTML解析库 | BeautifulSoup(html, 'lxml') 阅读全文
posted @ 2017-10-10 20:15 cnkai 阅读(479) 评论(0) 推荐(0)
摘要:选择器 | 例子 | 例子描述 | | .class | .intro| 选择 class="intro" 的所有元素。 id | firstname| 选择 id="firstname" 的所有元素。 | |选择所有元素。 element| p |选择所有 元素。 element,element| 阅读全文
posted @ 2017-10-10 20:15 cnkai 阅读(308) 评论(0) 推荐(0)
摘要:连接数据库 StrictRedis ConnectionPool 构造url方式连接到数据库,有以下三种模式: String操作 方法 | 作用 | 示例 | 示例结果 | | | | set(name, value) | 给name赋值为value | redis.set('name', 'Bob 阅读全文
posted @ 2017-10-09 20:15 cnkai 阅读(29511) 评论(1) 推荐(5)
摘要:连接数据库 创建数据库 创建表 插入数据 事务机制,一旦出错会回滚,不存在一半插入一半没插入的情况。 更新数据 删除数据 查询数据 fetch()存在指针偏移的问题,使用一次,指针就会向后偏移一次。 阅读全文
posted @ 2017-10-09 20:15 cnkai 阅读(400) 评论(0) 推荐(0)
摘要:re模块 阅读全文
posted @ 2017-10-09 20:14 cnkai 阅读(377) 评论(0) 推荐(0)
摘要:连接数据库 插入数据 insert_one(), 一次插入一条记录 insert_many(), 一次插入多条记录 mongo默认会给每一条记录添加一个_id字段,用来唯一标识每一条记录。 可以使用 和`result.inserted_ids`来查看插入记录的_id编号。 查询数据 find_one 阅读全文
posted @ 2017-10-09 20:14 cnkai 阅读(2672) 评论(0) 推荐(0)
摘要:time模块 datetime模块 阅读全文
posted @ 2017-10-09 20:13 cnkai 阅读(300) 评论(0) 推荐(0)
摘要:停止子线程 如果一切正常,那么上面的例子很完美。可是,需要停止程序,直接ctrl+c,会抛出KeyboardInterrupt错误,我们修改一下主循环: 可是实际上并不好使,虽然主线程try了KeyboardInterrupt异常,但是子线程并没有退出,为了解决这个问题,可以设置子线程为守护线程,这 阅读全文
posted @ 2017-10-09 20:13 cnkai 阅读(458) 评论(0) 推荐(0)
摘要:几个概念: event_loop 事件循环:程序开启一个无限的循环,程序员会把一些函数注册到事件循环上。当满足事件发生的时候,调用相应的协程函数。 coroutine 协程:协程对象,指一个使用async关键字定义的函数,它的调用不会立即执行函数,而是会返回一个协程对象。协程对象需要注册到事件循环, 阅读全文
posted @ 2017-10-09 20:12 cnkai 阅读(466) 评论(0) 推荐(0)
摘要:协程嵌套 使用async可以定义协程,协程用于耗时的io操作,我们也可以封装更多的io操作过程,这样就实现了嵌套的协程,即一个协程中await了另外一个协程,如此连接起来。 如果使用的是 asyncio.gather创建协程对象,那么await的返回值就是协程运行的结果。 不在main协程函数里处理 阅读全文
posted @ 2017-10-09 20:12 cnkai 阅读(433) 评论(0) 推荐(0)
摘要:发起请求 添加请求参数 自定义User Agent 自定义cookies post字符串 post文件 设置代理 设置认证代理 阅读全文
posted @ 2017-10-09 20:11 cnkai 阅读(601) 评论(0) 推荐(0)
摘要:冒泡排序 算法思想: 对于一组需要排序的数据,对于相邻的两个数进行比较,使较大(或者较小)的数一直向后推,经过多层排序之后,使整个序列是有序的。 算法实现: 算法的实现使用了两层for循环,其中对于外层for循环来说,第一次for循环,最大的数被推到最后面,第二次for循环,次大的数被推到次后面.. 阅读全文
posted @ 2017-10-09 20:11 cnkai 阅读(375) 评论(0) 推荐(0)
摘要:yield python中yield的用法很像return,都是提供一个返回值,但是yield和return的最大区别在于,return一旦返回,则代码段执行结束,但是yield在返回值以后,会交出CUP的使用权,代码段并没有直接结束,而是在此处中断,当调用send()或者next()方法之后,yi 阅读全文
posted @ 2017-09-13 14:36 cnkai 阅读(12428) 评论(4) 推荐(2)
摘要:Python中提供了函数和类来实现多进程 创建多进程 使用函数方式 使用类方式 使用以上两种方式创建多进程时,join()方法与多线程效果相同,多线程设置守护线程的命令是 , 而多进程设置守护进程的命令是 进程锁Lock() 进程锁可以避免因为多个进程访问共享资源而发生冲突。 不使用进程锁 可以看到 阅读全文
posted @ 2017-09-13 14:35 cnkai 阅读(822) 评论(0) 推荐(0)
摘要:python中提供了函数和类两种方式使用多线程: 创建多线程 函数方式 类方式 使用类方式需要写一个类,继承自threading.Thread类,然后重写run()方法。 线程锁 threading.Lock() 由于线程之间可以共享数据,而线程交替被送上CPU运行,这时很容易出现的一个问题就是,一 阅读全文
posted @ 2017-09-11 19:08 cnkai 阅读(1444) 评论(0) 推荐(0)
摘要:Python多线程与多进程中join()方法的效果是相同的。 下面仅以多线程为例: 首先需要明确几个概念: 知识点一: 当一个进程启动之后,会默认产生一个主线程,因为线程是程序执行流的最小单元,当设置多线程时,主线程会创建多个子线程,在python中,默认情况下(其实就是setDaemon(Fals 阅读全文
posted @ 2017-09-11 14:48 cnkai 阅读(123007) 评论(11) 推荐(27)