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

    文章

    6892

    浏览量

    88828
  • APP
    APP
    +关注

    关注

    33

    文章

    1568

    浏览量

    72376
  • python
    +关注

    关注

    56

    文章

    4782

    浏览量

    84453

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

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

收藏 人收藏

    评论

    相关推荐

    Python库解析:通过库实现代理请求与数据抓取

    Python中,有多个库可以帮助你实现代理请求和数据抓取。这些库提供了丰富的功能和灵活的API,使得你可以轻松地发送HTTP请求、处理响应、解析HTML/XML/JSON数据,以及进行复杂的网络操作。
    的头像 发表于 10-24 07:54 138次阅读

    如何利用海外爬虫IP进行数据抓取

    利用海外爬虫IP进行数据抓取需要综合考虑多个方面。
    的头像 发表于 10-12 07:54 142次阅读

    如何利用python和API查询IP地址?

    Python中,直接查询IP地址的地理位置或详细信息(如所属国家、城市等)通常需要依赖外部API服务,因为Python标准库本身不提供直接查询IP地址地理位置的功能。以下是一个使用requests
    发表于 08-28 11:55

    利用Python脚本登录到交换机并创建VLAN

    本文将详细介绍如何利用Python脚本登录到交换机并创建VLAN。
    的头像 发表于 08-12 17:59 530次阅读

    深度学习常用的Python

    深度学习常用的Python库,包括核心库、可视化工具、深度学习框架、自然语言处理库以及数据抓取库等,并详细分析它们的功能和优势。
    的头像 发表于 07-03 16:04 568次阅读

    python解析netflow数据到csv的流程详解

    本文主要讲解了linux下通过tcpdump抓取netflow数据包,并将其导入到wireshark进行解析,然后通过wireshark导出数据为json文件,再通过python脚本将其解析为csv文件以便做数据分析。
    的头像 发表于 05-01 11:18 631次阅读
    <b class='flag-5'>python</b>解析netflow数据到csv的流程详解

    苹果Apple Silicon芯片曝安全隐患:黑客可利用漏洞窃取用户数据

    据悉,黑客可借助此漏洞获取加密密钥,进而盗取用户个人信息。DMP作为内存系统中的角色,负责推测当前运行代码所需访问的内存地址。黑客则借此可预测下一步需获取的数据位,以此干扰数据的预取过程,进而获悉用户敏感数据。此类攻击行为被称为“Go Fetch”操作。
    的头像 发表于 03-22 10:30 772次阅读

    Python 控制台CS V8.11.00 综合开发环境用户手册

    电子发烧友网站提供《Python 控制台CS V8.11.00 综合开发环境用户手册.pdf》资料免费下载
    发表于 01-29 12:00 0次下载
    <b class='flag-5'>Python</b> 控制台CS V8.11.00 综合开发环境<b class='flag-5'>用户</b>手册

    Python智能家居系统代码介绍

    与设备的控制、用户界面设计以及扩展性与可靠性等方面。 一、系统结构与功能模块 Python智能家居系统的整体结构可以分为三个主要模块:传感器模块、控制模块和用户界面模块。 传感器模块:该模块负责采集家庭环境中的各种传感器数据,例
    的头像 发表于 01-25 09:46 1272次阅读

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

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

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

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

    Python运行环境有哪些

    以运行在Java虚拟机上。JPython提供了与Java的互操作性,可以让开发者利用Python的灵活性和简洁性来开发Java应用程序。 IronP
    的头像 发表于 11-29 16:14 1912次阅读

    python自带的idle怎么进入

    详细介绍Python的IDLE的各个方面,包括如何进入IDLE、IDLE的功能和特点以及如何使用IDLE进行编程和调试等。 首先,进入Python的IDLE非常简单。对于Windows用户,可以在
    的头像 发表于 11-29 14:51 2191次阅读

    python调用windows命令

    Windows命令,提供一些实际的示例和代码。 首先,我们需要了解一些基本概念。Windows命令是一种命令行界面(CLI),它允许用户通过键入命令来与操作系统进行交互。Python提供了一个名为 subprocess 的内置模块,它允许我们在
    的头像 发表于 11-29 14:34 998次阅读

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

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