摘要:
高性能爬虫 假设有3个url需要发请求。 串行 串行肯定是最慢的,怎么改进?第一反应:开多个线程。好吧,lowB 第一反应都是这个方法 多线程 开多个线程虽然可以实现并发,但是开线程总归是要耗费资源的,那能不能利用一个线程帮忙提高效率呢,这就需要异步非阻塞登场了 异步非阻塞 什么是异步非阻塞?异步非 阅读全文
摘要:
``` == 第一部分:基本配置第二部分:并发与延迟第三部分:智能限速/自动节流:AutoThrottle extension第四部分:爬取深度与爬取方式第五部分:中间件、Pipelines、扩展第六部分:缓存 阅读全文
摘要:
flask sqlalchemy sqlalchemy本身和flask没有任何关系,flask sqlalchemy是flask的一个第三方组件,这个组件做的事情就是让使用sqlalchemy更加方便一点,但是其内部本质还是sqlalchemy 安装: flask的项目目录 下面来详细看一下我这目录 阅读全文
摘要:
轮询 假设有这么一个场景:要做一个在线投票的系统,那么我的浏览器看的的投票数量应该是动态变化的,一旦有其他人投票,那么我的浏览器显示的投票数应该会发生改变,那么这个场景应该怎么做呢?第一反应想到的就是每隔一段时间去发请求拿最新数据,比如每隔2s通过ajax偷偷发请求去获取最新票数然后渲染到我的浏览器 阅读全文
摘要:
去重 内置去重 scrapy默认会对url进行去重,使用的去重类是 ,看一下源码流程 因为'http://www.baidu.com?k1=1&k2=2'和'http://www.baidu.com?k2=2&k1=1'应该是同一个请求,但是如果单纯地把url或者url的md5值放到集合中肯定是有问 阅读全文
摘要:
介绍 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中。理解scrapy可以参考django,django框架是用帮助我们快速开发web程序的,而scrapy框架就是用来帮助我们快速抓取网页信息的。 安装 整体架构 在 阅读全文
摘要:
介绍 SQLAlchemy是一个基于Python实现的ORM框架。该框架建立在 DB API之上,使用关系对象映射进行数据库操作,简言之便是:将类和对象转换成SQL,然后使用数据API执行SQL并获取执行结果,并把获取的结果转为python对象。其中发sql到mysql服务器,从mysql服务器拿结 阅读全文
摘要:
DBUtils是Python的一个用于实现数据库连接池的模块,有两种使用方式 为每个线程开辟一个连接 这种方式一般是不推荐使用的,因为与100个线程难道还开100个连接。线程即使调用了close方法,也不会关闭,这里的close只是把连接重新放到连接池,供自己线程再次使用。当线程终止时,连接自动关闭 阅读全文
摘要:
应用上下文 前面的请求上下文是把请求相关的封装成ctx对象放到Local对象中,应用上下文是把整个应用app自己放到Local对象中。 和应用上下文有关的全局变量 多app应用 flask的web开发中根据url的不同分发到不同app去处理,一个请求最终只会落到一个app的视图函数去处理 其中Dis 阅读全文
摘要:
预热 面向对象 这样写会报错 如果自定义了自己的__setattr__,在初始化的时候就不能这样给对象绑定属性,因为使用self.dict = {}的时候就会去调用__setattr__去给对象设置属性,但是此时对象还没有一个dict的属性。但凡是给自己写的 这个类实例化的对象,调用对象的obj.x 阅读全文