• 爬取掌阅app免费电子书数据


    主要介绍如何抓取app数据及抓包工具的使用,能看到这相信你已经有爬虫基础了

    编不下去了,主要是我懒,直接开干吧!

    一.使用环境和工具

      windows + python3 + Jsonpath + Charles + MuMu模拟器

    二.下载工具

      Charles下载:https://www.charlesproxy.com/latest-release/download.do

      MuMu模拟器:http://mumu.163.com/baidu/

    三.安装及配置工具

      Charles

        安装,直接傻瓜式安装就行

        配置:

          1.打开Charles->点击Help->SSL Procying->Install Charles Root Certificate,即可进入证书安装界面

            

          2.安装证书->下一步->将所有的证书都放入下列存储(P)->浏览->受信任的根证书颁发机构->确定->下一步->完成

            

            

          3.可设置端口号,一般为默认(如果系统没有其他软件与8888端口冲突,可忽略该步骤)

            

          4.设置SSL代理(如果不设置,后面请求会是有很多443)

              Proxy -> SSL Proxying Settings -> Add

            

            输入端口号443,点击OK

            

            出现下面界面就添加成功了

            

      

       MuMu模拟器

        安装:同样是傻瓜式

        配置:

          1.设置代理

            

          2.获取电脑ip  ,  win + r -> 输入cmd -> 回车

            

          3.安装证书

            在虚拟器打开浏览器,输入cals.pro/ssl自动下载证书,下载完成后,点击打开

            

        不出意外的话,工具安装和配置到这里就可以编写爬虫代码了

    四.测试及找数据api接口

      1.首先要打开Charles,再打开模拟器,下载掌阅app,打开模拟器,搜索免费

        

      2.再看Charles软件,会发现左边的选项框中多了,一堆请求地址,随便点击一个,发现这个返回的数据和看到的好像不一样

        

      3.再点下一个,再看看,哎,这个返回的数据好像挺多的,但是有编码问题看不出来是什么

        

      4.复制请求地址

        

      5.将请求地址在浏览器中打开,现在就可以看出来是什么了,会发现这些数据就是我们想要的数据

        

       6.在验证一下,打开掌阅往下滑,会发现Charles中多了好多长的差不多的请求地址,这就证明猜测是正确的

        

    五.编写爬虫程序

      这里我用的是requests模块,只是开了个头

      

    import requests
    import jsonpath
    import json
    
    # 经分析得知
    # pageSize:表示的是每页返回多少条数据,currentPage:表示的是页数
    url = 'https://ah2.zhangyue.com/zybook3/u/p/api.php?Act=searchMultipleV3&keyword=%E5%85%8D%E8%B4%B9&type=book,category,activity,relatedSearch,author,user&pageSize=500&currentPage=1'
    # 请求头
    head= {
            "Host": "ah2.zhangyue.com",
            "Connection": "Keep-Alive",
            "Accept-Encoding": "gzip",
            "User-Agent": "okhttp/3.9.0"
    }
    # 携带请求头请求数据
    response = requests.get(url,headers = head)
    # 将json数据转为字典
    content = json.loads(response.text)
    # 使用jsonpath查找元素
    res = jsonpath.jsonpath(content,'$.body.book.datas')
    # 遍历取出每本书的详细信息
    for book in res[0]:
        print(book)

    返回数据结果:

      

    到这里,就可以爬取大部分app数据了

      如有问题,欢迎交流

  • 相关阅读:
    Activiti流程实例
    Activiti使用步骤 (IDEA)
    工作流简介
    并发编程常见面试题
    navicat自动备份数据,可实现每天定时备份
    MySQL, SQLite 和 PostgreSQL 关于information_schema 的一些查询(表结构,表信息,库信息....)
    GIS相关网站下载全国的GeoJSON格式数据可以到区县级数据
    GIS当中使用uDig打开shp图层,并查看数据结果
    解决Failed to execute goal org.apache.maven.plugins 错误,JDK版本不一致
    Maven插件maven-assembly-plugin进行打包部署
  • 原文地址:https://www.cnblogs.com/mswei/p/9404846.html
Copyright © 2020-2023  润新知