转载地址http://www.open-open.com/lib/view/open1453339544042.html

来自: http://my.oschina.net/jhao104/blog/606922

1、抓取APP数据包

方法详细可以参考这篇博文:http://my.oschina.net/jhao104/blog/605963

得到超级课程表登录的地址:http://120.55.151.61/V2/StudentSkip/loginCheckV4.action

表单:

表单中包括了用户名和密码,当然都是加密过了的,还有一个设备信息,直接post过去就是。

另外必须加header,一开始我没有加header得到的是登录错误,所以要带上header信息。


2、登录

登录代码:

import urllib2
from cookielib import CookieJar
loginUrl = 'http://120.55.151.61/V2/StudentSkip/loginCheckV4.action'
headers = {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8','User-Agent': 'Dalvik/1.6.0 (Linux; U; Android 4.1.1; M040 Build/JRO03H)','Host': '120.55.151.61','Connection': 'Keep-Alive','Accept-Encoding': 'gzip','Content-Length': '207',}
loginData = 'phoneBrand=Meizu&platform=1&deviceCode=868033014919494&account=FCF030E1F2F6341C1C93BE5BBC422A3D&phoneVersion=16&password=A55B48BB75C79200379D82A18C5F47D6&channel=MXMarket&phoneModel=M040&versionNumber=7.2.1&'
cookieJar = CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookieJar))
req = urllib2.Request(loginUrl, loginData, headers)
loginResult = opener.open(req).read()
print loginResult

登录成功 会返回一串账号信息的json数据

和抓包时返回数据一样,证明登录成功


3、抓取数据

用同样方法得到话题的url和post参数

做法就和模拟登录网站一样。详见:http://my.oschina.net/jhao104/blog/547311

下见最终代码,有主页获取和下拉加载更新。可以无限加载话题内容。

#!/usr/local/bin/python2.7
# -*- coding: utf8 -*-
"""超级课程表话题抓取
"""
import urllib2
from cookielib import CookieJar
import json''' 读Json数据 '''
def fetch_data(json_data):data = json_data['data']timestampLong = data['timestampLong']messageBO = data['messageBOs']topicList = []for each in messageBO:topicDict = {}if each.get('content', False):topicDict['content'] = each['content']topicDict['schoolName'] = each['schoolName']topicDict['messageId'] = each['messageId']topicDict['gender'] = each['studentBO']['gender']topicDict['time'] = each['issueTime']print each['schoolName'],each['content']topicList.append(topicDict)return timestampLong, topicList''' 加载更多 '''
def load(timestamp, headers, url):headers['Content-Length'] = '159'loadData = 'timestamp=%s&phoneBrand=Meizu&platform=1&genderType=-1&topicId=19&phoneVersion=16&selectType=3&channel=MXMarket&phoneModel=M040&versionNumber=7.2.1&' % timestampreq = urllib2.Request(url, loadData, headers)loadResult = opener.open(req).read()loginStatus = json.loads(loadResult).get('status', False)if loginStatus == 1:print 'load successful!'timestamp, topicList = fetch_data(json.loads(loadResult))load(timestamp, headers, url)else:print 'load fail'print loadResultreturn FalseloginUrl = 'http://120.55.151.61/V2/StudentSkip/loginCheckV4.action'
topicUrl = 'http://120.55.151.61/V2/Treehole/Message/getMessageByTopicIdV3.action'
headers = {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8','User-Agent': 'Dalvik/1.6.0 (Linux; U; Android 4.1.1; M040 Build/JRO03H)','Host': '120.55.151.61','Connection': 'Keep-Alive','Accept-Encoding': 'gzip','Content-Length': '207',}''' ---登录部分--- '''
loginData = 'phoneBrand=Meizu&platform=1&deviceCode=868033014919494&account=FCF030E1F2F6341C1C93BE5BBC422A3D&phoneVersion=16&password=A55B48BB75C79200379D82A18C5F47D6&channel=MXMarket&phoneModel=M040&versionNumber=7.2.1&'
cookieJar = CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookieJar))
req = urllib2.Request(loginUrl, loginData, headers)
loginResult = opener.open(req).read()
loginStatus = json.loads(loginResult).get('data', False)
if loginResult:print 'login successful!'
else:print 'login fail'print loginResult''' ---获取话题--- '''
topicData = 'timestamp=0&phoneBrand=Meizu&platform=1&genderType=-1&topicId=19&phoneVersion=16&selectType=3&channel=MXMarket&phoneModel=M040&versionNumber=7.2.1&'
headers['Content-Length'] = '147'
topicRequest = urllib2.Request(topicUrl, topicData, headers)
topicHtml = opener.open(topicRequest).read()
topicJson = json.loads(topicHtml)
topicStatus = topicJson.get('status', False)
print topicJson
if topicStatus == 1:print 'fetch topic success!'timestamp, topicList = fetch_data(topicJson)load(timestamp, headers, topicUrl)

结果:

转载请注明来源:http://my.oschina.net/jhao104/blog/606922

Python爬虫:抓取手机APP数据相关推荐

  1. python爬虫抓取数据的步骤-Python爬虫抓取手机APP的传输数据

    大多数APP里面返回的是json格式数据,或者一堆加密过的数据 .这里以超级课程表APP为例,抓取超级课程表里用户发的话题. 1.抓取APP数据包 得到超级课程表登录的地址:http://120.55 ...

  2. python爬app_Python爬虫抓取手机APP的传输数据

    大多数APP里面返回的是json格式数据,或者一堆加密过的数据 .这里以超级课程表APP为例,抓取超级课程表里用户发的话题. 1.抓取APP数据包 方法详细可以参考这篇博文:Fiddler如何抓取手机 ...

  3. python爬虫app步骤_Python爬虫抓取手机APP的传输数据,python爬虫抓取app

    Python爬虫抓取手机APP的传输数据,python爬虫抓取app 大多数APP里面返回的是json格式数据,或者一堆加密过的数据 .这里以超级课程表APP为例,抓取超级课程表里用户发的话题. 1. ...

  4. Python爬虫实战:手机APP数据抓取分析!谁说不能爬取app数据的?

    大多数手机APP里面返回的是json格式数据,或者一堆加密过的数据 .这里以超级课程表APP为例,使用python抓取超级课程表里用户发的话题.主要是练习python爬取app的一些方式和技巧. 1. ...

  5. Python爬虫+夜神模拟器+Fiddler抓取手机APP数据接口 -- 图文教程(霸霸看了都说好)

    Fiddler的抓包原理 Fiddler是强大的抓包工具,它的原理是以web代理服务器的形式进行工作的,使用的代理地址是:127.0.0.1,端口默认为8888,我们也可以通过设置进行修改. 代理就是 ...

  6. burpsuite抓取手机app数据包(通过笔记本开热点方式)

    burpsuite抓取手机app数据包(通过笔记本开热点方式) 1,点击笔记本右下方网络图标,出现移动热点,右键转到设置 进去之后设置热点名称密码,手机连接热点,笔记本查看连接设备的网段,这儿可以看到 ...

  7. 使用Fiddler抓取手机APP数据包--360WIFI

    使用Fiddler抓取手机APP流量--360WIFI 操作步骤: 1.打开Fiddler,Tools-Fiddler Options-Connections,勾选Allow remote compu ...

  8. fiddler抓取手机app数据(手机开热点)

    一.准备工作 1. 下载并安装fiddler抓包工具.手机提前安装好fiddler证书,这个可以看以往的文章 二.手机配置 手机打开热点,电脑连接成功后 1.首先需要知道电脑ip地址.电脑ip地址可通 ...

  9. fiddler抓取手机APP数据

    1.下载fiddler Fiddler官网下载地址:http://www.fiddler2.com/fiddl 2.安装fiddler 安装过程就是下一步下一步最后完成即可,安装好了以后需要配置一些内 ...

  10. python爬虫抓取动态网页数据_python网络爬虫抓取ajax动态网页数据:以抓取KFC门店地址为例...

    一,尝试用BeautifulSoup抓取 先打开KFC网站门店列表页面:http://www.kfc.com.cn/kfccda/storelist/index.aspx 可以看到门店列表如下图: 打 ...

最新文章

  1. C++知识点杂记2——类成员指针、嵌套类和union
  2. 熊猫烧香病毒企业局域网网完整解决方案
  3. 漫画:什么是volatile关键字?(整合版)
  4. linux怎么修改sftp默认端口,转:linux 修改sftp服务默认提供者sshd的session timeout
  5. mysql 加字段_MySQL8.0大表秒加字段,是真的吗?
  6. matlab x为整数,关于matlab中用什么字符表示任意整数
  7. 12. Laravel 4 迁移数据填充
  8. 测试人员常用的20个Linux命令(附Linux视频教程)
  9. 兆骑科创平台创新创业赛事路演,投融资服务
  10. 在C++中实现aligned_malloc
  11. Armbian 配置 WiFi
  12. java 实现鼠标移动事件
  13. DRF-视图类APIView与GenericAPIView
  14. Ubuntu中使用RoboMongo实现MongoDB的可视化
  15. linux运维前景2018,Linux运维工程师为什么越来越受企业重视?
  16. C语言项目二:电阻并联
  17. PTA 电话聊天狂人 思路分析及代码解析
  18. CAD梦想画图中的“线型设置”
  19. 使用MQTT远程控制树莓派继电器开关
  20. Java_数组(声明、创建、初始化、复制、增强型for循环、二维数组、排序、Arrays类)

热门文章

  1. HDOJ 5131 Song Jiang's rank list(暴力排序水题)
  2. iOS 关于友盟微信分享成功回调不走的问题
  3. [Arm]使用modprobe时 “modprobe: can‘t change directory to ...”
  4. Git GUI汉化,设置成中文
  5. 对Probabilistic Road Map(PRM)概率路图路径规划方法的理解
  6. 全球著名IT公司名字的由来
  7. 作业帮计算机三角函数,【三角函数公式大全】百度作业帮
  8. Opencv画图函数整理 及 cvCircle cvLine 只能画出黑白两种颜色问题 解决
  9. jupyter notebook显示行号
  10. ctrl+shift+z老是弹出搜狗输入法