0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何利用Python抓取用户发的话题

马哥Linux运维 来源:脚本之家 作者:j_hao104 2021-09-05 09:37 次阅读

大多数APP里面返回的是json格式数据,或者一堆加密过的数据 。这里以超级课程表APP为例,抓取超级课程表里用户发的话题

1、抓取APP数据包

表单:

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

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

2、登录

登录代码:

import urllib2from cookielib import CookieJarloginUrl = ‘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参数

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

#!/usr/local/bin/python2.7# -*- coding: utf8 -*-“”“超级课程表话题抓取”“”import urllib2from cookielib import CookieJarimport 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 topicJsonif topicStatus == 1:print ‘fetch topic success!’timestamp, topicList = fetch_data(topicJson)load(timestamp, headers, topicUrl)

结果:

562957e4-0dd5-11ec-8fb8-12bb97331649.jpg

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据
    +关注

    关注

    8

    文章

    6504

    浏览量

    87446
  • APP
    APP
    +关注

    关注

    33

    文章

    1518

    浏览量

    71567
  • python
    +关注

    关注

    51

    文章

    4657

    浏览量

    83380

原文标题:利用Python爬虫抓取手机APP的传输数据

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    从人生、历史到单片机的话题讨论

    我们来看单片机 的例子,读者可能会担心单片机(又称MCU,或微控制器) 过于专业而无法理解。完全没必要!在这里我们仅借它谈论一下有关时间的话题,顺带提一下单片机系统的概念。
    的头像 发表于 12-05 10:35 253次阅读
    从人生、历史到单片机<b class='flag-5'>的话题</b>讨论

    话题通信接口的定义和运行效果

    ,将驱动相机并发布图像话题,此时的话题数据使用的是ROS中标准定义的Image图像消息; 第二个节点,会运行视觉识别功能,识别目标的位置,这个位置我们希望封装成话题消息,发布出去,谁需要使用谁就来订阅; 第三个节点,订阅位
    的头像 发表于 12-01 15:32 163次阅读
    <b class='flag-5'>话题</b>通信接口的定义和运行效果

    神秘又有趣的话题——芯片引脚顺序!

    亲爱的“芯”朋友,你们有没有发现,每颗芯片上都布满了密密麻麻的引脚,犹如一座迷宫,让人无从下手?今天,我们一起来揭开这个迷宫的神秘面纱,探索一下这个既神秘又有趣的话题——芯片引脚顺序!芯片,这个看似
    的头像 发表于 11-28 09:33 4108次阅读
    神秘又有趣<b class='flag-5'>的话题</b>——芯片引脚顺序!

    logcat命令抓取日志方法

    命令抓取日志 logcat -b main -b system -b crash -r 1024 -n 5 -f android.log -v threadtime -b:加载可供查看的缓冲区的日志
    的头像 发表于 11-23 17:31 474次阅读
    logcat命令<b class='flag-5'>抓取</b>日志方法

    python中各种函数的用法

    ()函数:用于输出内容到控制台。 例如:print("Hello, World!"),将输出"Hello, World!"。 input()函数:用于获取用户输入的值。 例如:name = input
    的头像 发表于 11-23 15:48 345次阅读

    python中input怎么输入3个值

    Python 中,可以使用 input() 函数来获取用户的输入。如果你想要输入多个值,可以根据具体的需求使用以下方法。 方法一:使用多个 input 函数 最简单的方法是使用多个 input
    的头像 发表于 11-23 15:31 2705次阅读

    Python自带的命令窗口

    Python自带的命令窗口,也称为Python交互式解释器,是Python编程语言的一个重要工具,它允许用户在命令行界面中输入和执行Python
    的头像 发表于 11-22 14:02 374次阅读

    怎么在Python中实现截图功能

    利用Python自带的win32api和win32con、win32gui等模块,我们能执行许多windows下的自动化操作。比如两个窗口的自动点击操作,从软件中的窗口复制文本到txt中,甚至是截图
    的头像 发表于 11-03 15:32 443次阅读
    怎么在<b class='flag-5'>Python</b>中实现截图功能

    利用Python发送邮件的 3 种方式

    1. 前言 邮件,作为最正式规范的沟通方式,在日常办公过程中经常被用到 我们都知道 Python内置了对 SMTP 的支持,可以发送纯文本、富文本、HTML 等格式的邮件 本文将聊聊利用
    的头像 发表于 11-02 11:37 612次阅读

    如何利用Python和pandas来处理json数据

    了如何利用Python和pandas(Python的第三方库)来处理json数据,主要内容包含: json数据简介 常用json数据转化网站 json数据和Python数据的转化 pa
    的头像 发表于 11-01 10:59 510次阅读
    如何<b class='flag-5'>利用</b><b class='flag-5'>Python</b>和pandas来处理json数据

    基于视觉的机器人抓取系统设计

    抓取综合方法是机器人抓取问题的核心,本文从抓取检测、视觉伺服和动态抓取等角度进行讨论,提出了多种抓取方法。各位对机器人识别
    的头像 发表于 08-19 17:19 965次阅读
    基于视觉的机器人<b class='flag-5'>抓取</b>系统设计

    Iris Python调试脚本用户指南

    调试是使用CADI实现的到Fast Models的一个Python客户端接口。 在Fast Models 11.10及更高版本中不建议使用该选项。 要继续在Fast Models中使用Python客户端,您必须改用Iris Python
    发表于 08-09 06:21

    抓取机器人为什么都采用伺服电机?

    抓取机器人需要对物体进行高精度、高速度的抓取和放置,因此需要使用高性能的伺服电机来实现精准的运动控制。相比于其他类型的电机,伺服电机具有以下优点,适合应用于抓取机器人中: 1、伺服电机可以实现高精度
    的头像 发表于 06-15 09:15 383次阅读

    如何用Burpsuite抓取exe数据包?

    前几天在群里看到有师傅在问如何用Burpsuite抓取exe数据包的问题?所以想着写篇文章简单记录一下Burpsuite+Proxifier抓取exe数据包的方法。
    的头像 发表于 06-12 16:12 3036次阅读
    如何用Burpsuite<b class='flag-5'>抓取</b>exe数据包?

    浅谈机器人视觉抓取的目的

    机器人视觉抓取的目的是使用一个机械手模型(包括二指或多指夹爪,吸盘等),以RGB或RGBD相机采集的场景图像为输入计算出一个最优的抓取位姿,使机械手在该位姿下可以稳定地抓取模型已知或未知的物体。
    发表于 03-30 10:19 483次阅读