今日内容概要python
一、cookie操做redis
二、pipelineflask
三、中间件cookie
四、扩展session
五、自定义命令多线程
六、scrapy-redisscrapy
七、flask使用ide
- 路由系统函数
- 视图性能
- 模版
- message(闪现)
- 中间件
- session
- 蓝图
- 安装第三方插件
Scrapy - 建立project - 建立爬虫 - 编写 - 类 - start_urls = ['http://www.xxx.com'] - def parse(self,response): yield Item对象 yield Request对象 - pipeline - process_item @classmethod - from_clawer - open_spider - close_spider 配置 - request对象("地址",回调函数) - 执行 高性能相关: - 多线程【IO】和多进程【计算】 - 尽量利用线程: 一个线程(Gevent),基于协程: - 协程,greenlet - 遇到IO就切换 一个线程(Twisted,Tornado),基于事件循环: - IO多路复用 - Socket,setBlocking(Flase)
start_requests
支持返回值有两种(scrapy内部经过会执行iter()):
1、生成器yield Request
2、可迭代对象 [url1,url2,url3]
经过源码查看源码入口:
from scrapy.crawler import Crawler
Crawler.crawl 方法
例子:
def start_requests(self): for url in self.start_urls: yield Request(url=url,callback=self.parse) # return [Request(url=url,callback=self.parse),]
***迭代器和可迭代对象的区别:
迭代器,具备__next__方法,并逐一贯后取值 li = [11,22,33] #迭代器有iter和next方法 obj = iter(li) obj.__next__() 可迭代对象,具备__iter__方法,返回迭代器 li = list([11,22,33]) //可迭代对象没有next方法 迭代器 = li.__iter__() 生成器,函数中具备yield关键字 __iter__ __next__ 迭代器 = iter(obj)