使用python抓取App数据_python爬虫app

实现过程

首先下载夜神模拟器模拟手机也可以用真机,然后下载Fiddler抓取手机APP数据包,分析接口完成以后使用Python实现爬虫程序

Fiddler安装配置过程

第一步:下载神器Fiddler

Fiddler下载完成之后,傻瓜式的安装一下!

第二步:设置Fiddler

打开Fiddler, Tools-> Fiddler Options (配置完后记得要重启Fiddler)
选中"Decrpt HTTPS traffic", Fiddler就可以截获HTTPS请求
选中"Allow remote computers to connect". 是允许别的机器把HTTP/HTTPS请求发送到Fiddler上来
这里写图片描述
这里写图片描述
记住这个端口号是:8888

夜神模拟器安装配置过程

######第一步:下载安装
夜神模拟器下载完成之后,傻瓜式的安装一下!
######第二步:配置桥接 实现互通
首先将当前手机网络桥接到本电脑网络 实现互通
这里写图片描述这里写图片描述
安装完成桥接驱动后配置IP地址,要配成和本机互通的网段,配置完成后打开主机cmd终端ping通ok

第三步:配置代理
  1. 打开主机cmd
    这里写图片描述
  2. 输入ipconfig查看本机IP
    这里写图片描述
  3. 配置代理
    进入夜神模拟器–打开设置–打开WLAN
    这里写图片描述
    点击修改网络–配置代理 如下图:
    这里写图片描述
    配置完后保存
    到这里我们就设置好所有的值,下面就来测试一下,打开手机的超级课程表APP
    这里写图片描述
  4. 在夜神模拟器上下载你想爬取得App使用Fiddler抓包分析api后使用python进行爬取就可以了

####爬取充电网APP实例
爬取部分内容截图:
这里写图片描述
部分python代码分享:

import requests
import city
import json
import jsonpath
import re

city_list = city.jsons
tags_list = city.Tag

def city\_func(city_id):
    try:
        city = jsonpath.jsonpath(city_list, '$..sub[?(@.code=={})]'.format(int(city_id)))[0]["name"]
    except:
        city = jsonpath.jsonpath(city_list, '$[?(@.code=={})]'.format(int(city_id)))[0]["name"]
    return city

def tags\_func(tags_id):
    tags_join = []
    if tags_id:
        for tags in tags_id:
            t = jsonpath.jsonpath(tags_list,'$..spotFilterTags[?(@.id=={})]'.format(int(tags)))
            tags_join.append(t[0]["title"])

    return ('-'.join(tags_join))

def split\_n(ags):
    return re.sub('\n',' ',ags)


def request(page):
    print('开始下载第%d页'%page)
    url = 'https://app-api.chargerlink.com/spot/searchSpot'
    two_url = "https://app-api.chargerlink.com/spot/getSpotDetail?spotId={d}"
    head = {
        "device": "client=android&cityName=%E5%8C%97%E4%BA%AC%E5%B8%82&cityCode=110106&lng=116.32154281224254&device\_id=8A261C9D60ACEBDED7CD3706C92DD68E&ver=3.7.7&lat=39.895024107858724&network=WIFI&os\_version=19",
        "appId": "20171010",
        "timestamp": "1532342711477",
        "signature": "36daaa33e7b0d5d29ac9c64a2ce6c4cf",
        "forcecheck": "1",
        "Content-Type": "application/x-www-form-urlencoded",
        "Content-Length": "68",
        "Host": "app-api.chargerlink.com",
        "Connection": "Keep-Alive",
        "User-Agent": "okhttp/3.2.0"
    }


    data = {
        "userFilter[operateType]": 2,
        "cityCode": 110000,
        "sort": 1,
        "page": page,
        "limit": 10,
    }

    response = requests.post(url,data=data,headers=head)
    #获取数据
    data = response.json()
    for i in data['data']:
        c = []
        id = i['id']
        name = i["name"] #充电桩名
        phone = i["phone"] #手机号
        num = i['quantity'] #有几个充电桩
        city = city_func(i["provinceCode"]) #城市
        tags =tags_func(i["tags"].split(','))#标签
        message = c + [id,name,phone,num,city,tags]
        parse_info(two_url.format(d=id),message)

def parse\_info(url,message):

    #打开文件
    with open('car.csv','a',encoding='utf-8')as c:
        head = {
            "device": "client=android&cityName=&cityCode=&lng=116.32154281224254&device\_id=8A261C9D60ACEBDED7CD3706C92DD68E&ver=3.7.7&lat=39.895024107858724&network=WIFI&os\_version=19",
            "TOKEN": "036c8e24266c9089db50899287a99e65dc3bf95f",
            "appId": "20171010",
            "timestamp": "1532357165598",
            "signature": "734ecec249f86193d6e54449ec5e8ff6",
            "forcecheck": "1",


现在能在网上找到很多很多的学习资源,有免费的也有收费的,当我拿到1套比较全的学习资源之前,我并没着急去看第1节,我而是去审视这套资源是否值得学习,有时候也会去问一些学长的意见,如果可以之后,我会对这套学习资源做1个学习计划,我的学习计划主要包括规划图和学习进度表。



分享给大家这份我薅到的免费视频资料,质量还不错,大家可以跟着学习

![](https://img-blog.csdnimg.cn/img_convert/21b2604bd33c4b6713f686ddd3fe5aff.png)



**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化学习资料的朋友,可以戳这里无偿获取](https://bbs.csdn.net/topics/618317507)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值