一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用Python爬蟲抓取手機APP的數(shù)據(jù)

Wildesbeast ? 來源:今日頭條 ? 作者:有趣的程序媛 ? 2020-02-05 12:09 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

大多數(shù)APP里面返回的是json格式數(shù)據(jù),或者一堆加密過的數(shù)據(jù) 。這里以超級課程表APP為例,抓取超級課程表里用戶發(fā)的話題。

1

抓取APP數(shù)據(jù)包

表單:

私信小編01 領取完整項目代碼!

表單中包括了用戶名和密碼,當然都是加密過了的,還有一個設備信息,直接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數(shù)據(jù)

和抓包時返回數(shù)據(jù)一樣,證明登錄成功

3

抓取數(shù)據(jù)

用同樣方法得到話題的url和post參數(shù)

做法就和模擬登錄網(wǎng)站一樣。詳見:http://my.oschina.net/jhao104/blog/547311

下見最終代碼,有主頁獲取和下拉加載更新??梢詿o限加載話題內(nèi)容。

#!/usr/local/bin/python2.7 # -*- coding: utf8 -*- """ 超級課程表話題抓取 """ import urllib2 from cookielib import CookieJar import json ''' 讀Json數(shù)據(jù) ''' 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&' % timestamp req = 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 loadResult return False loginUrl = '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)

結(jié)果:

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • APP
    APP
    +關注

    關注

    33

    文章

    1587

    瀏覽量

    74288
  • python
    +關注

    關注

    56

    文章

    4827

    瀏覽量

    86811
  • 爬蟲
    +關注

    關注

    0

    文章

    83

    瀏覽量

    7515
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    拼多多電商 API 接口與競品,數(shù)據(jù)抓取速度大較量

    在當今電商行業(yè),數(shù)據(jù)抓取速度是衡量平臺競爭力的核心指標之一。高效的 API(應用程序接口)能顯著提升數(shù)據(jù)分析、庫存管理和用戶個性化推薦的效率。本文將深入比較拼多多電商 API 接口與主要競品(如淘寶
    的頭像 發(fā)表于 07-09 15:29 ?175次閱讀

    如何用Brower Use WebUI實現(xiàn)網(wǎng)頁數(shù)據(jù)智能抓取與分析?

    數(shù)據(jù)時,不會被網(wǎng)站反爬機制識別和封禁,能穩(wěn)定有效地獲取數(shù)據(jù)和執(zhí)行任務。除了數(shù)據(jù)采集外,Browser-use還能抓取網(wǎng)頁全部交互元素,自動完成設置的動作,如填寫表單、內(nèi)容提取等。 Br
    的頭像 發(fā)表于 04-17 17:48 ?435次閱讀
    如何用Brower Use WebUI實現(xiàn)網(wǎng)頁<b class='flag-5'>數(shù)據(jù)</b>智能<b class='flag-5'>抓取</b>與分析?

    復合機器人抓取精度的影響因素及提升策略

    復合機器人結(jié)合了移動機器人(如AGV)和機械臂的功能,廣泛應用于物流、制造等領域。抓取精度是其核心性能指標之一,直接影響作業(yè)效率和產(chǎn)品質(zhì)量。本文將探討復合機器人抓取精度的影響因素及提升策略。
    的頭像 發(fā)表于 04-12 11:15 ?343次閱讀

    爬蟲數(shù)據(jù)獲取實戰(zhàn)指南:從入門到高效采集

    爬蟲數(shù)據(jù)獲取實戰(zhàn)指南:從入門到高效采集 ? ? 在數(shù)字化浪潮中,數(shù)據(jù)已成為驅(qū)動商業(yè)增長的核心引擎。無論是市場趨勢洞察、競品動態(tài)追蹤,還是用戶行為分析,爬蟲技術都能助你快速捕獲目標信息。
    的頭像 發(fā)表于 03-24 14:08 ?627次閱讀

    安科瑞如何打造基于“APP電表”的能源數(shù)據(jù)服務平臺

    安科瑞APP電表安裝之后,可通過手機掃碼便捷地實現(xiàn)產(chǎn)品接入平臺,無需關注調(diào)試和平臺運作過程,并可自主選擇平臺功能,獲得到相應的數(shù)據(jù)服務, 更好地實現(xiàn)了電網(wǎng)可靠、經(jīng)濟、高效、綠色的目標和各種電力終端的全面感知和互聯(lián)。 關鍵詞:能源
    的頭像 發(fā)表于 01-22 13:21 ?432次閱讀
    安科瑞如何打造基于“<b class='flag-5'>APP</b>電表”的能源<b class='flag-5'>數(shù)據(jù)</b>服務平臺

    適用于MySQL和MariaDB的Python連接器:可靠的MySQL數(shù)據(jù)連接器和數(shù)據(jù)

    和 MariaDB 數(shù)據(jù)庫服務器以及托管數(shù)據(jù)庫服務,以對存儲的數(shù)據(jù)執(zhí)行創(chuàng)建、讀取、更新和刪除操作。該解決方案完全實現(xiàn)了 Python DB API 2.0 規(guī)范,并作為 Window
    的頭像 發(fā)表于 01-17 12:18 ?501次閱讀
    適用于MySQL和MariaDB的<b class='flag-5'>Python</b>連接器:可靠的MySQL<b class='flag-5'>數(shù)據(jù)</b>連接器和<b class='flag-5'>數(shù)據(jù)</b>庫

    IP地址數(shù)據(jù)信息和爬蟲攔截的關聯(lián)

    IP地址數(shù)據(jù)信息和爬蟲攔截的關聯(lián)主要涉及到兩方面的內(nèi)容,也就是數(shù)據(jù)信息和爬蟲。IP 地址數(shù)據(jù)信息的內(nèi)容豐富,包括所屬地域、所屬網(wǎng)絡運營商、訪
    的頭像 發(fā)表于 12-23 10:13 ?384次閱讀

    Python庫解析:通過庫實現(xiàn)代理請求與數(shù)據(jù)抓取

    Python中,有多個庫可以幫助你實現(xiàn)代理請求和數(shù)據(jù)抓取。這些庫提供了豐富的功能和靈活的API,使得你可以輕松地發(fā)送HTTP請求、處理響應、解析HTML/XML/JSON數(shù)據(jù),以及進
    的頭像 發(fā)表于 10-24 07:54 ?490次閱讀

    全球視野下的海外爬蟲IP:趨勢、機遇與風險

    在全球視野下,海外爬蟲IP的使用呈現(xiàn)出一系列趨勢,同時也伴隨著機遇與風險。
    的頭像 發(fā)表于 10-15 07:54 ?541次閱讀

    海外爬蟲IP的合法邊界:合規(guī)性探討與實踐

    海外爬蟲IP的合法邊界主要涉及合規(guī)性探討與實踐。
    的頭像 發(fā)表于 10-12 07:56 ?614次閱讀

    如何利用海外爬蟲IP進行數(shù)據(jù)抓取

    利用海外爬蟲IP進行數(shù)據(jù)抓取需要綜合考慮多個方面。
    的頭像 發(fā)表于 10-12 07:54 ?605次閱讀

    詳細解讀爬蟲多開代理IP的用途,以及如何配置!

    爬蟲多開代理IP是一種在爬蟲開發(fā)中常用的技術策略,主要用于提高數(shù)據(jù)采集效率、避免IP被封禁以及獲取地域特定的數(shù)據(jù)。
    的頭像 發(fā)表于 09-14 07:55 ?814次閱讀

    單片機WiFi模塊怎樣連接手機APP

    將單片機WiFi模塊連接到手機APP通常涉及以下幾個步驟: 選擇單片機和WiFi模塊 :選擇合適的單片機(如Arduino, ESP32等)和WiFi模塊(如ESP8266, ESP32等)。 硬件
    的頭像 發(fā)表于 09-10 15:31 ?3640次閱讀

    pytorch和python的關系是什么

    在當今的人工智能領域,Python已經(jīng)成為了最受歡迎的編程語言之一。Python的易學易用、豐富的庫和框架以及強大的社區(qū)支持,使其成為了數(shù)據(jù)科學、機器學習和深度學習等領域的首選語言。而在深度學習領域
    的頭像 發(fā)表于 08-01 15:27 ?3285次閱讀

    怎么導出python邊緣計算中的APP

    怎么導出python邊緣計算中的APP,想進行修改又找不到源碼
    發(fā)表于 07-25 06:13