路飛學城-爬蟲集訓營-第二章

 

學習心得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

相關文章
相關標籤/搜索