學習心得html
1.本章學習的是以實戰爲主,新知識點在Flask上,其餘的知識點都在第一章上前端
Flask中文文檔:http://www.pythondoc.com/flask-mega-tutorial/python
2.初學者沒學過框架在Flask大概會踩不少坑須要本身網上找不少東西git
3.學習新東西的時候必定要有耐心不要放棄,遇到問題多用搜索引擎和論壇找答案。不要找到一個答案就不找了多找點案例能多幫助記憶github
4.在學習上遇到了不少問題好比說wx.qq.com和wx2.qq.com不一樣用戶是不一樣得,程序須要更加人性化得去分析。web
5.在直播課上老師說的規範都是一些咱們沒工做經驗的人須要的。對於web框架咱們須要的是耐心去練習,多寫,多想,多查才能熟悉的應用畢竟爬蟲離不開web開發,框架是必需要學會的json
Web框架---Flaskflask
1.安裝
pip3/pip install flask
2.文件結構
project
__init__.py
static #靜態
templates #html文件
views.py #視圖
run.py #運行
3.簡單使用
1.在__init__.py建立初始化腳本
from flask import Flask
app = Flask(__name__)
from app import views
2.編寫視圖函數
from app import app瀏覽器
@app.route('/')
@app.route('/index')
def index():
return "Hello, World!"
3.執行腳本
from app import app
app.run()
4.運行
python3 ./run.py
4.使用模板
from flask import render_template
@app.route('/login')
def login():
qcode = '給模板的數據'
return render_template('login.html', qcode=qcode)
5.管理會話 --- session
session 是基於cookie實現, 保存在服務端的鍵值對(形式爲 {隨機字符串:‘xxxxxx’}), 同時在瀏覽器中的cookie中也對應一相同的隨機字符串,用來再次請求的 時候驗證;
微信
@app.route('/check/login') def check_login(): check_login_url = 'https://login.wx2.qq.com/cgi-bin/mmwebwx-bin/login' check_login_params = { 'loginicon': 'true', 'uuid': session['qrcode'], 'tip': 0, 'r': '-2034746127', # 時間戳取反 '_': int(time.time() * 1000) } response = requests.get(url=check_login_url, params=check_login_params) result = {'code': 408} if 'window.code=408' in response.text: # 用戶沒掃碼 result['code'] = 408 elif 'window.code=201' in response.text: result['code'] = 201 # 用戶掃碼了,獲取頭像 result['avatar'] = re.findall("window.userAvatar = '(.*?)';", response.text)[0] elif 'window.code=200' in response.text: redirect_uri = re.findall('window.redirect_uri="(.*?)";', response.text)[0] redirect_uri = redirect_uri + '&fun=new&version=2' if 'wx2.qq.com' in redirect_uri:#有些微信須要wx2才能正常使用,判斷返回URi是否wx2爲後續準備 session['host'] = 'wx2.qq.com' else: session['host'] = 'wx.qq.com' ret = requests.get(redirect_uri) ticket_dict = xml_parse(ret.text) session['ticket_dict'] = ticket_dict session['ticket_cookies'] = ret.cookies.get_dict() result['code'] = 200 return jsonify(result)
6.注意點
1.注意不要用全局變量存cookie等重要信息要使用session
2.重複的東西能夠放進session或者g裏
基於Flask編寫web微信
1.。。。。
1.微信ID不惟一每次登錄後會改變,因此登錄後須要再次獲取ID
2.接收消息若是圖片消息會沒法接收,可分析接收到的json獲取圖片
3.微信消息近乎是實時,因此須要開個線程或者進程來循環獲取
2.思路
1.經過分析wx.qq.com網頁獲取到二維碼地址 顯示在本身的前端
2.添加長輪詢檢測用戶是否成功掃描二維碼
3.檢測用戶是否點擊登錄
4.登錄後爲了後續須要的 把初始化數據和cookie放入session
5.根據API達到各類功能,好比 獲取聯繫人,微信公衆號,發送消息,接收消息,獲取用戶頭像
3.實例
https://github.com/amongtheflowers/WebWX