Python爬虫:抓取手机APP数据
转载地址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数据相关推荐
- python爬虫抓取数据的步骤-Python爬虫抓取手机APP的传输数据
大多数APP里面返回的是json格式数据,或者一堆加密过的数据 .这里以超级课程表APP为例,抓取超级课程表里用户发的话题. 1.抓取APP数据包 得到超级课程表登录的地址:http://120.55 ...
- python爬app_Python爬虫抓取手机APP的传输数据
大多数APP里面返回的是json格式数据,或者一堆加密过的数据 .这里以超级课程表APP为例,抓取超级课程表里用户发的话题. 1.抓取APP数据包 方法详细可以参考这篇博文:Fiddler如何抓取手机 ...
- python爬虫app步骤_Python爬虫抓取手机APP的传输数据,python爬虫抓取app
Python爬虫抓取手机APP的传输数据,python爬虫抓取app 大多数APP里面返回的是json格式数据,或者一堆加密过的数据 .这里以超级课程表APP为例,抓取超级课程表里用户发的话题. 1. ...
- Python爬虫实战:手机APP数据抓取分析!谁说不能爬取app数据的?
大多数手机APP里面返回的是json格式数据,或者一堆加密过的数据 .这里以超级课程表APP为例,使用python抓取超级课程表里用户发的话题.主要是练习python爬取app的一些方式和技巧. 1. ...
- Python爬虫+夜神模拟器+Fiddler抓取手机APP数据接口 -- 图文教程(霸霸看了都说好)
Fiddler的抓包原理 Fiddler是强大的抓包工具,它的原理是以web代理服务器的形式进行工作的,使用的代理地址是:127.0.0.1,端口默认为8888,我们也可以通过设置进行修改. 代理就是 ...
- burpsuite抓取手机app数据包(通过笔记本开热点方式)
burpsuite抓取手机app数据包(通过笔记本开热点方式) 1,点击笔记本右下方网络图标,出现移动热点,右键转到设置 进去之后设置热点名称密码,手机连接热点,笔记本查看连接设备的网段,这儿可以看到 ...
- 使用Fiddler抓取手机APP数据包--360WIFI
使用Fiddler抓取手机APP流量--360WIFI 操作步骤: 1.打开Fiddler,Tools-Fiddler Options-Connections,勾选Allow remote compu ...
- fiddler抓取手机app数据(手机开热点)
一.准备工作 1. 下载并安装fiddler抓包工具.手机提前安装好fiddler证书,这个可以看以往的文章 二.手机配置 手机打开热点,电脑连接成功后 1.首先需要知道电脑ip地址.电脑ip地址可通 ...
- fiddler抓取手机APP数据
1.下载fiddler Fiddler官网下载地址:http://www.fiddler2.com/fiddl 2.安装fiddler 安装过程就是下一步下一步最后完成即可,安装好了以后需要配置一些内 ...
- python爬虫抓取动态网页数据_python网络爬虫抓取ajax动态网页数据:以抓取KFC门店地址为例...
一,尝试用BeautifulSoup抓取 先打开KFC网站门店列表页面:http://www.kfc.com.cn/kfccda/storelist/index.aspx 可以看到门店列表如下图: 打 ...
最新文章
- C++知识点杂记2——类成员指针、嵌套类和union
- 熊猫烧香病毒企业局域网网完整解决方案
- 漫画:什么是volatile关键字?(整合版)
- linux怎么修改sftp默认端口,转:linux 修改sftp服务默认提供者sshd的session timeout
- mysql 加字段_MySQL8.0大表秒加字段,是真的吗?
- matlab x为整数,关于matlab中用什么字符表示任意整数
- 12. Laravel 4 迁移数据填充
- 测试人员常用的20个Linux命令(附Linux视频教程)
- 兆骑科创平台创新创业赛事路演,投融资服务
- 在C++中实现aligned_malloc
- Armbian 配置 WiFi
- java 实现鼠标移动事件
- DRF-视图类APIView与GenericAPIView
- Ubuntu中使用RoboMongo实现MongoDB的可视化
- linux运维前景2018,Linux运维工程师为什么越来越受企业重视?
- C语言项目二:电阻并联
- PTA 电话聊天狂人 思路分析及代码解析
- CAD梦想画图中的“线型设置”
- 使用MQTT远程控制树莓派继电器开关
- Java_数组(声明、创建、初始化、复制、增强型for循环、二维数组、排序、Arrays类)
热门文章
- HDOJ 5131 Song Jiang's rank list(暴力排序水题)
- iOS 关于友盟微信分享成功回调不走的问题
- [Arm]使用modprobe时 “modprobe: can‘t change directory to ...”
- Git GUI汉化,设置成中文
- 对Probabilistic Road Map(PRM)概率路图路径规划方法的理解
- 全球著名IT公司名字的由来
- 作业帮计算机三角函数,【三角函数公式大全】百度作业帮
- Opencv画图函数整理 及 cvCircle cvLine 只能画出黑白两种颜色问题 解决
- jupyter notebook显示行号
- ctrl+shift+z老是弹出搜狗输入法