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

    文章

    7314

    浏览量

    93982
  • APP
    APP
    +关注

    关注

    33

    文章

    1589

    浏览量

    75641
  • python
    +关注

    关注

    57

    文章

    4857

    浏览量

    89583

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    SL427数据采集传输到取用水管理平台

    模式,为取用水管理平台提供了标准化数据接口。 某地全面推行取用水计量信息化系统建设,要求实现灌区、工厂、自来水厂、二供泵站等多个场景等流量计数据对接到取用水管理平台中。由于监测站点数量多,要求SL427通信设备具备良好性能与可靠
    的头像 发表于 11-07 17:14 457次阅读
    SL427数据采集传输到<b class='flag-5'>取用</b>水管理平台

    ILA 抓取MCU200T的内部信号

    我们在调BUG的过程中单纯利用引脚输出中间变量的方法可能比较困难,因此我们在实际的开发过程中使用了ILA内嵌式逻辑分析仪来进行内部信号的捕捉和观察。 1、在E203的 vivado工程中打开IP
    发表于 10-29 08:03

    商品销量数据抓取接口

    原理、实现步骤、代码示例和注意事项。内容基于Python技术栈,确保真实可靠。 一、接口原理 商品销量数据通常存储在电商平台的服务器上(如淘宝、京东)。抓取接口的核心是通过HTTP请求模拟用户行为,从目标页面或API获取数据。
    的头像 发表于 10-21 18:02 402次阅读
    商品销量数据<b class='flag-5'>抓取</b>接口

    【创龙TL3562-MiniEVM开发板试用体验】7、python测试

    =W0603 global exitright # 获取用户输入 exitright = input(\"输入字母q后,按下回车以退出播放\\\\n\") try
    发表于 08-05 11:09

    拼多多电商 API 接口与竞品,数据抓取速度大较量

    在当今电商行业,数据抓取速度是衡量平台竞争力的核心指标之一。高效的 API(应用程序接口)能显著提升数据分析、库存管理和用户个性化推荐的效率。本文将深入比较拼多多电商 API 接口与主要竞品(如淘宝
    的头像 发表于 07-09 15:29 598次阅读

    Allegro Skill布局功能之远程抓取器件介绍

    过使用“远程抓取器件”功能,用户可以批量选取多个器件,随后通过鼠标左键逐个点击放置,实现高效精准的器件布局。该功能特别适用于在大规模芯片周边配置去耦电容、电阻等元件,能够快速将元件定位到目标焊盘附近或芯片背面。
    的头像 发表于 05-08 10:34 1223次阅读
    Allegro Skill布局功能之远程<b class='flag-5'>抓取</b>器件介绍

    如何获取用于开发fx2的sdk和示例源代码?

    大家好 我正在使用 FX2 设备,以前也使用过 FX3 设备。 使用 FX3 设备 SDK,当我下载它时,我在安装文件夹中获得了许多示例源代码,但是它没有 FX2 的示例源代码,我如何获取用于开发 fx2 的 sdk 和示例源代码?
    发表于 05-07 07:25

    遥测终端机内蒙古取用水监测协议定制开发,智慧农业节水灌溉

    取用水监测协议定制化开发,实现与自治区水资源管理平台的深度对接。定制化协议开发#深度适配内蒙古取用水监测需求在标准水文HEX版本上定制上报协议(内蒙古机井灌溉),
    的头像 发表于 04-15 15:43 454次阅读
    遥测终端机内蒙古<b class='flag-5'>取用</b>水监测协议定制开发,智慧农业节水灌溉

    复合机器人抓取精度的影响因素及提升策略

    复合机器人结合了移动机器人(如AGV)和机械臂的功能,广泛应用于物流、制造等领域。抓取精度是其核心性能指标之一,直接影响作业效率和产品质量。本文将探讨复合机器人抓取精度的影响因素及提升策略。
    的头像 发表于 04-12 11:15 716次阅读

    python入门圣经-高清电子书(建议下载)

    和Pygal 等强大的Python 库和工具介绍,以及列表、字典、if 语句、类、文件与异常、代码测试等内容; 第二部分将理论付诸实践,讲解如何开发三个项目,包括简单的Python 2D 游戏开发如何利用数据
    发表于 04-10 16:53

    鸿蒙应用元服务开发-Account Kit获取华为账号用户信息概述

    详细接入体验可参考Account Kit提供的SampleCode示例工程。 典型场景: 1、元服务需要完善用户头像信息,参见获取头像。 2、元服务提供的服务依赖用户手机号,需要获取用户手机号,参见获取
    发表于 04-02 11:10

    2025年电子行业值得关注的话题

    《What's Next》是安富利推出的全新数字读物,面向任何想要了解电子行业未来发展趋势的用户,安富利凭借在全球市场的深厚积淀与广泛影响力,为您精选最具前瞻性的议题,呈现精准的市场趋势、深刻的技术洞察。
    的头像 发表于 02-18 17:36 1257次阅读

    使用Python实现xgboost教程

    使用Python实现XGBoost模型通常涉及以下几个步骤:数据准备、模型训练、模型评估和模型预测。以下是一个详细的教程,指导你如何在Python中使用XGBoost。 1. 安装XGBoost
    的头像 发表于 01-19 11:21 2214次阅读

    深度解析!RK3568 加持机械臂是如何实现颜色识别与抓取的?

    一、产品简介TL3568-PlusTEB人工智能实验箱国产高性能处理器64位4核低功耗2.0GHz超高主频1T超高算力NPU兼容鸿蒙等国产操作系统二、实验目的1、了解机械臂识别颜色抓取积木的基本流程
    的头像 发表于 01-15 08:07 1243次阅读
    深度解析!RK3568 加持机械臂是如何实现颜色识别与<b class='flag-5'>抓取</b>的?

    华为云 Flexus X 实例下的场景体验——小企业使用 Python 语言——超迅速搭建简单公网 API 接口服务

      前言 小企业为了快速搞定一些接口功能如果不使用 Python 的话相对来说复杂度还是很高的,这里我来通过【华为云 Flexus X 实例】来迅速的搭建一个 Python 的 WebApi 示例
    的头像 发表于 12-27 13:46 855次阅读
    华为云 Flexus X 实例下的场景体验——小企业使用 <b class='flag-5'>Python</b> 语言——超迅速搭建简单公网 API 接口服务