今日內容概要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)