路飞学城-爬虫集训营-第二章
学习心得
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
路飞学城-爬虫集训营-第二章相关推荐
- 路飞学城linux第三模块考试,路飞学城-爬虫集训营-第三章
学习心得:html 人生苦短,我用python,爬虫深海,我选scrapy.!!python 在学习scrapy的时候真的很累,不少时候看着都会困,由于基础不牢固,看着会感受有点累..遇到问题一点点的 ...
- 路飞学城—Python爬虫实战密训班 第三章
路飞学城-Python爬虫实战密训班 第三章 一.scrapy-redis插件实现简单分布式爬虫 scrapy-redis插件用于将scrapy和redis结合实现简单分布式爬虫:- 定义调度器- 定 ...
- 路飞学城python电子书_路飞学城-Python开发集训-第一章
路飞学城-Python开发集训-第一章 1.本章学习心得.体会 我: 间接性勤奋. 我: 学习方法论:输入--输出---纠正 我: 对对对 走出舒适区, 换圈子, 转思路,投资自我加筹码. 我: 圈子 ...
- 路飞学城python全栈开发_python 全栈开发,Day98(路飞学城背景,django ContentType组件,表结构讲解)...
昨日内容回顾 1. 为什么要做前后端分离?-前后端交给不同的人来编写,职责划分明确.-API (IOS,安卓,PC,微信小程序...)-vue.js等框架编写前端时,会比之前写jQuery更简单快捷. ...
- 路飞学城Python-Day46
16-如何正确的使用类选择器及总结 一般情况下尽量不要去使用id选择器,因为id选择器有很大的限制性,id一般都是JS配合使用的,类选择器都是和CSS配合使用的,特殊性情况可以用id选择器. 类的使用 ...
- Python高级全栈开发实战 老男孩课程S16+路飞学城项目+女神串讲 Python全栈直通车课程
python高级全栈开发实战 老男孩课程S16+路飞学城项目+女神串讲 Python全栈直通车课程 Python高级全栈开发实战老男孩课程,是可以帮助同学们从零基础开始到项目开发实战的全栈课程,内容非 ...
- 路飞学城结算中心实现
路飞学城结算中心的优惠券表结构 # ########################### 优惠券 ################################ class Coupon(mode ...
- 路飞学城之 luffy(1)
目录 路飞学城之 luffy(1) 一.内容 二.内容大纲 小结 三.内容大纲 小结 四.内容大纲 自定义模态框 componses/Login.vue componses/Header.vue vu ...
- 路飞学城python开发入门学习
零基础参加了路飞学城python七天入门集训,由于无相关基础知识,所以笔记简陋,大家将就着看看,欢迎批评指正. 1.第一个程序: print('Hello,World") 2. python ...
最新文章
- SpringBoot核心注解介绍
- 计算机原理课程设计陈宏,东北大学计算机组成基础原理课程教学设计.doc
- 观物外篇-唐-邵雍:(一)
- [hackinglab][CTF][基础关][2020] hackinglab 基础关 writeup
- javascript中的常见事件
- 脉冲神经元的膜电位释放方式,分为hard和soft两种
- Windows forfiles(删除历史文件)
- 远程体验Linux Lite
- idea 配置 maven 和 镜像
- 添加映射的过程(2) - 解析
- 计算机编程英语词汇app,计算机编程英语词汇
- 技术交底书(三)-----一种虚拟现实共享及三维空间共享系统
- 最小巧最简单最安全的KMS模拟器vlmcsd,最新支持Win10 server2016和Office2016!
- 怎么创建邮箱帐号?教育邮箱
- Unbuntu 安装 TeamViewer14
- Unity Shader 常规光照模型代码整理
- 嘉为科技出席2021腾讯云启产业生态年会,荣获“年度通用明星奖”
- ios 微信逆向部分
- 计算机win7等级考试试题,计算机等级考试一级win7操作题.docx
- 常见的爬虫error以及解决方法
热门文章
- loss和val loss
- 电脑族饱受电脑辐射............
- sougou输入法彻底删除方法 Mac
- VC++给软件添加异常捕获模块生成dump文件(附源码)
- U-Boot下载与编译
- 魔兽世界私服trinitycore2的架构——世界对象
- Grid map 的应用
- 计算机毕业设计JAVA靓车汽车销售网站mybatis+源码+调试部署+系统+数据库+lw
- layUi数据表格显示parsererror
- 报关软件java_爱农支付快捷支付+支付单报关demo