学习心得

 1.本章学习的是以实战为主,新知识点在Flask上,其他的知识点都在第一章上

   Flask中文文档:http://www.pythondoc.com/flask-mega-tutorial/

 2.初学者没学过框架在Flask大概会踩很多坑需要自己网上找很多东西

 3.学习新东西的时候一定要有耐心不要放弃,遇到问题多用搜索引擎和论坛找答案。不要找到一个答案就不找了多找点案例能多帮助记忆

 4.在学习上遇到了很多问题比如说wx.qq.com和wx2.qq.com不同用户是不同得,程序需要更加人性化得去分析。

 5.在直播课上老师说的规范都是一些我们没工作经验的人需要的。对于web框架我们需要的是耐心去练习,多写,多想,多查才能熟悉的应用毕竟爬虫离不开web开发,框架是必须要学会的

Web框架---Flask

  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'] = 408elif '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_dictsession['ticket_cookies'] = ret.cookies.get_dict()result['code'] = 200return 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

转载于:https://www.cnblogs.com/flower-poison/p/9298858.html

路飞学城-爬虫集训营-第二章相关推荐

  1. 路飞学城linux第三模块考试,路飞学城-爬虫集训营-第三章

    学习心得:html 人生苦短,我用python,爬虫深海,我选scrapy.!!python 在学习scrapy的时候真的很累,不少时候看着都会困,由于基础不牢固,看着会感受有点累..遇到问题一点点的 ...

  2. 路飞学城—Python爬虫实战密训班 第三章

    路飞学城-Python爬虫实战密训班 第三章 一.scrapy-redis插件实现简单分布式爬虫 scrapy-redis插件用于将scrapy和redis结合实现简单分布式爬虫:- 定义调度器- 定 ...

  3. 路飞学城python电子书_路飞学城-Python开发集训-第一章

    路飞学城-Python开发集训-第一章 1.本章学习心得.体会 我: 间接性勤奋. 我: 学习方法论:输入--输出---纠正 我: 对对对 走出舒适区, 换圈子, 转思路,投资自我加筹码. 我: 圈子 ...

  4. 路飞学城python全栈开发_python 全栈开发,Day98(路飞学城背景,django ContentType组件,表结构讲解)...

    昨日内容回顾 1. 为什么要做前后端分离?-前后端交给不同的人来编写,职责划分明确.-API (IOS,安卓,PC,微信小程序...)-vue.js等框架编写前端时,会比之前写jQuery更简单快捷. ...

  5. 路飞学城Python-Day46

    16-如何正确的使用类选择器及总结 一般情况下尽量不要去使用id选择器,因为id选择器有很大的限制性,id一般都是JS配合使用的,类选择器都是和CSS配合使用的,特殊性情况可以用id选择器. 类的使用 ...

  6. Python高级全栈开发实战 老男孩课程S16+路飞学城项目+女神串讲 Python全栈直通车课程

    python高级全栈开发实战 老男孩课程S16+路飞学城项目+女神串讲 Python全栈直通车课程 Python高级全栈开发实战老男孩课程,是可以帮助同学们从零基础开始到项目开发实战的全栈课程,内容非 ...

  7. 路飞学城结算中心实现

    路飞学城结算中心的优惠券表结构 # ########################### 优惠券 ################################ class Coupon(mode ...

  8. 路飞学城之 luffy(1)

    目录 路飞学城之 luffy(1) 一.内容 二.内容大纲 小结 三.内容大纲 小结 四.内容大纲 自定义模态框 componses/Login.vue componses/Header.vue vu ...

  9. 路飞学城python开发入门学习

    零基础参加了路飞学城python七天入门集训,由于无相关基础知识,所以笔记简陋,大家将就着看看,欢迎批评指正. 1.第一个程序: print('Hello,World") 2. python ...

最新文章

  1. SpringBoot核心注解介绍
  2. 计算机原理课程设计陈宏,东北大学计算机组成基础原理课程教学设计.doc
  3. 观物外篇-唐-邵雍:(一)
  4. [hackinglab][CTF][基础关][2020] hackinglab 基础关 writeup
  5. javascript中的常见事件
  6. 脉冲神经元的膜电位释放方式,分为hard和soft两种
  7. Windows forfiles(删除历史文件)
  8. 远程体验Linux Lite
  9. idea 配置 maven 和 镜像
  10. 添加映射的过程(2) - 解析
  11. 计算机编程英语词汇app,计算机编程英语词汇
  12. 技术交底书(三)-----一种虚拟现实共享及三维空间共享系统
  13. 最小巧最简单最安全的KMS模拟器vlmcsd,最新支持Win10 server2016和Office2016!
  14. 怎么创建邮箱帐号?教育邮箱
  15. Unbuntu 安装 TeamViewer14
  16. Unity Shader 常规光照模型代码整理
  17. 嘉为科技出席2021腾讯云启产业生态年会,荣获“年度通用明星奖”
  18. ios 微信逆向部分
  19. 计算机win7等级考试试题,计算机等级考试一级win7操作题.docx
  20. 常见的爬虫error以及解决方法

热门文章

  1. loss和val loss
  2. 电脑族饱受电脑辐射............
  3. sougou输入法彻底删除方法 Mac
  4. VC++给软件添加异常捕获模块生成dump文件(附源码)
  5. U-Boot下载与编译
  6. 魔兽世界私服trinitycore2的架构——世界对象
  7. Grid map 的应用
  8. 计算机毕业设计JAVA靓车汽车销售网站mybatis+源码+调试部署+系统+数据库+lw
  9. layUi数据表格显示parsererror
  10. 报关软件java_爱农支付快捷支付+支付单报关demo