温馨提示

小程序爬虫的简单介绍。[alert class=”info”]需要你会一点点Python,Prcharm,Fiddler,微信电脑端。[/alert]
[alert class=”success”]小程序里一些比较好的地图集(请在微信小程序搜索):[/alert][collapse title=”点击查看完整内容”]

  • 2022安徽省地图集
  • 2020山东省地图集
  • 2021上海市地图集
  • 甘肃省地图集
  • 图说常州
  • 增城城乡发现与规划地图集[/collapse]
  1. 先配置Fiddler。[alert class=”danger”]网上关于配置证书、降低微信APP版本等方法,经测试均无效,不要再去折腾啦!那些方法适用于早期的版本[/alert]正常情况下,你打开Fiddler,再打开小程序,是抓取不到小程序里的内容的,因为数据已经被微信小程序加密传输了。
  2. 菜单Rules->Customize Rules,找到static function Main() 代码,复制如下代码至上方,保存。

[reply]评论可见的内容

static function OnDone(oSession: Session) {
    FiddlerObject.log(oSession) 
    //判断host请求避免下载其他图片
    if(oSession.RequestHeaders["Host"] == "a0.cdn.xiaoenai.com"){
      //检查Content-Type 
      if (oSession.ResponseHeaders["Content-Type"]!=null || oSession.ResponseHeaders["content-type"]!=null)
      {
        //避免不规范标头
        var contentType=oSession.ResponseHeaders["Content-Type"];
        if (String.IsNullOrEmpty(contentType) )
          contentType=oSession.ResponseHeaders["content-type"];
            
        //判定请求是否图片
        if (contentType.Contains("image"))
        {
          //确定文件名(保存用)
          var fileName="";
          var fileIndex =    oSession.RequestHeaders.RequestPath.LastIndexOf ("/");
          if (fileIndex>0)
            fileName =    oSession.RequestHeaders.RequestPath.Substring (fileIndex+1);
  
          //如果文件名非法(名称含非法字符)
          if(fileName.IndexOf('?')>0 || fileName.IndexOf('&') )
            fileName=String.Empty;
          //输出日志(在Fiddler 主窗口,日志处输出)
          //FiddlerObject.log("Content-Type:"+ contentType +" RequestPath:"+oSession.RequestHeaders.RequestPath);
                
          //如果文件名为Null,自行创建一个文件名(Guid)
          if (String.IsNullOrEmpty( fileName))
          {
            fileName=Guid.NewGuid().ToString();
            var extName=    contentType.Replace("image/","");
            fileName=fileName+"."+extName;
          }
                
          //太小的图片不要,比如站位图片(自行调节)
          if (oSession.ResponseBody.Length>100)
          {
            //指定保存位置
            var saveDir="g:\\Temp\\";
            //不存在则创建文件夹
            if (!System.IO.Directory.Exists(saveDir))
              System.IO.Directory.CreateDirectory(saveDir);
                    
            //保存响应流
            oSession.SaveResponseBody(saveDir+fileName);
            //写日志
            FiddlerObject.log("[文件保存]:"+fileName)
          }
        }
      }
    }
  }
 

[/reply]
[alert class=”success”]再去刷新小程序,即可找到相应图片链接。根据图片链接,用Python批量处理即可。

部分资源比较方便,譬如常州地图集,直接是JPG格式,但如上海小程序,是256×256像素的图片碎片,需要抓取后通过python的Pillow模块拼接,大概每张图约3~4MB。[/alert]

(Visited 69 times, 1 visits today)