python之路--爬虫第二篇

内容简介:基于flask框架实现web微信的登录以及收发消息。

实现思路:

  1.获取验证码,并检测是否在手机端扫码并确认登录(长轮询)

  2.用户数据初始化获取的授权信息,并根据获取的授权信息获取联系人信息

  3.发送消息,根据接受者的ID,并携带登陆授权的认证发送POST请求

  4.接受消息,用长轮询的方式,去想服务器端发送求,并检测返回值中的‘selector’值为0代表无新消息,2代表有新消息。无论为‘0’or‘2’,都会接着发长轮询请求,如果为‘2’就会向服务端请求新消息的内容。

需要注意的事项:

  1.有的微信登录地址是wx.qq.com,有的却是wx2.qq.com。检测方法:先去wx.qq.com去登录一遍,登录成功后查看域名,上面是wx.qq.com/***还是wx2.qq.com/***,以此来判断适合的URL,否则获取的数据是空值。

  2.微信的图片具有防盗链的功能。

    问题原因:在获取图片的get请求中携带的请求头有‘Referer’or‘Host’,但是html页面在发送请求的时候请求头是自动生成的,是‘127.0.0.1:5000/***’这种格式的。

    解决思路:自己在后台去模拟好请求头,在headers中添加相关的参数即可获取到图片的二进制数据,然后直接返回给前端HTML网页的img标签。

再说一点自己不会的模块吧:

  1.循环打印出所有联系人你的头像,没有成功

    解决办法:进一步学习函数的基础知识 和 flask模块。多加练习

  2.接受消息的长轮询没做好,在访问页面期间必须有人来消息才不会出错,而且不能持续打印新消息,只能打印一次。

  3.收发消息还是显示@****的ID识别号,不能根据ID转换成昵称,不符合人类观看。

这次作业做的不是很成功,我想还是我的知识储备太少了。                   --Mobs

原文地址:https://www.cnblogs.com/mobs/p/9304258.html

时间: 2024-11-09 10:22:25

python之路--爬虫第二篇的相关文章

Python之路【第二篇】:Python基础(一)

Python之路[第二篇]:Python基础(一) 入门知识拾遗 一.作用域 对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用. 1 2 3 if 1==1:     name = 'wupeiqi' print  name 下面的结论对吗? 外层变量,可以被内层变量使用 内层变量,无法被外层变量使用 二.三元运算 1 result = 值1 if 条件 else 值2 如果条件为真:result = 值1如果条件为假:result = 值2 三.进制 二进制,01 八进

Python之路【第二篇】:Python基础(1)-列表

#!/usr/bin/env python3# -*- coding: utf-8 -*-#Author:Jam #0.列表'''序列是最基本的数据结构,序列中的每个元素都分配一个数字,它的位置索引第一个是0,第二个是1,以此类推列表是最常用的python数据类型,作为一个方括号内的逗号分隔值出现列表的数据项不需要具有相同的类型''' #1.创建一个列表list1 = ['google','Runoob',1997,2000]list2 = [1,2,3,4,5]list3 = ["a"

Python之路【第二篇】:Python基础(2)-Tuple元组

#!/usr/bin/env python3# -*- coding: utf-8 -*-#Author:Jam #0.元组'''元组和列表类似,不同之处在于元组的元素不能修改元组使用小括号,列表使用方括号元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可''' #实例:tup1 = ('Google','Runoob',1997,2000)tup2 = (1,2,3,4,5)tup3 = 'a','b','c','d' #创建空元组tup1 = () #元组中只包含一个元素时,需要在元

Python之路【第二篇】:Python基础

参考链接:老师 BLOG : http://www.cnblogs.com/wupeiqi/articles/4906230.html 入门拾遗 一.作用域 只要变量在内存中就能被调用!但是(函数的栈有点区别) 对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用. 1 if 1==1: 2 name = 'tianshuai' 3 print name 所以下面的说法是不对的: 外层变量,可以被内层变量使用 内层变量,无法被外层变量使用 二.三元运算 1 result =

Python之路【第二篇】计算机组成

硬件组成:输入单元.输出单元.中央处理单元.存储单元 南桥:I/O操作 北桥:CPU操作 0/1的单位称为bit(位) bit是计算机中能识别的最小单位. 字节是计算机中最小的存储单位. 8bit=1Byte(字节)=255=2^8-1 1024Byte=1KByte=1KB 1024KByte=1MByte=1MB 100万字节 1024MB=1GB=10亿字节 1024GB=1TB=1万亿字节 硬盘是外部存储. 机械硬盘的特点:1.数据断电不丢失 2.可重复读写 3.速度慢(相对于内存) 固

Python之路,第二篇:Python入门与基础4

Python3 字符串 字符串是一个有序的字符序列 如何表示一个字符串: 在非注释中凡是用引号括起来的部分都是字符串: '  单引号     "  双引号      '''  三单引号    """  三双引号 空字符串的表示方法: ' '   .  " "  .   '''   '''  .   """   """ 空字符串的布尔值(bool)为False. >>>

Python之路【第九篇】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

Python之路[第九篇]:Python操作 RabbitMQ.Redis.Memcache.SQLAlchemy Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached基于一个存储键/值对的hashmap.其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信. Memc

Python之路【第九篇】:Python基础(26)——socket server

socketserver Python之路[第九篇]:Python基础(25)socket模块是单进程的,只能接受一个客户端的连接和请求,只有当该客户端断开的之后才能再接受来自其他客户端的连接和请求.当然我 们也可以通过python的多线程等模块自己写一个可以同时接收多个客户端连接和请求的socket.但是这完全没有必要,因为python标准库已经为 我们内置了一个多线程的socket模块socketserver,我们直接调用就可以了,完全没有必要重复造轮子. 我们只需简单改造一下之前的sock

Python之路【第二十四篇】:Python学习路径及练手项目合集

Python学习路径及练手项目合集 Wayne Shi· 2 个月前 参照:https://zhuanlan.zhihu.com/p/23561159 更多文章欢迎关注专栏:学习编程. 本系列Python技术路径中包含入门知识.Python基础.Web框架.基础项目.网络编程.数据与计算.综合项目七个模块.路径中的教程将带你逐步深入,学会如何使用 Python 实现一个博客,桌面词典,微信机器人或网络安全软件等.完成本路径的基础及项目练习,将具备独立的Python开发能力. 完整的Python学