APP爬虫(1)想学新语言,又没有动力,怎么办?

书接上文。使用appium在帖子列表界面模拟上划动作,捕捉不到列表的规律。上划结束后,列表只能获取到屏幕呈现的部分,而且下标还是从0开始的。

根据酸奶爸爸多年码代码的经验,帖子肯定不是一次性加载完成的,一定会有分页,上划操作到某处APP一定会请求API接口。那么我们监听APP的网络请求不就能获取到帖子内容了吗!

mac下使用charles这个软件实现。

charles简介

配置好charles网络监听后又遇到拦路虎,APP的请求是https协议的,charles监听到的报文都是乱码的。我在百度上谷歌了一下。

Mac使用Charles进行HTTPS抓包

终于能在charles里看到明文的网络请求了,于是通过网络请求可以归纳出帖子分页加载的规律。这样酸奶爸爸就可以自己编写程序,循环调用API请求抓取数据了。此处又遇到拦路虎(我为什么要加个“又”字)。API的请求做了参数签名校验,每次从charles抓到的请求,时效只有5分钟。

如果抓取程序能够尽可能的模仿用户行为,那么我们会突破所有服务端的屏障。

使用appium的在帖子详情页每3秒模拟用户上划一次,使用charles监听虚拟机的网络请求。这样charles会源源不断的捕捉到帖子分页的API请求。此处又又遇到拦路虎(我不喜欢“拦”,但我喜欢“路虎”)。此时小姐姐们的照片还是在charles里,而且还都是url字符串。

使用charles的自动保存功能,定时保存API响应结果。在charles的菜单栏“Tools”->“Auto Save”。按照下图配置,“Save Type”请选择“HTTP Archive”。配置完成后,charles抓取到的API响应会保存为HAR格式的文本文件。

HAR 格式规范

到这里总算是拨开云雾见青天,har文件记录是每次API请求的全过程,有url、参数、响应时间和返回值等等,而且还是标准的json格式。我们可以用新学的go语言写一个控制台程序来解析har文件,并将解析后的结果整理归类,帖子内容存入MySQL数据库,小姐姐们的图片curl下载到文件系统。

新语言的学习并不都是新知识的学习,更多的是编程习惯的迁移。

酸奶爸爸本来是做PHP开发的,现在用GO语言写这个,本次迁移的技能如下:

  • 日志记录
  • MySQL数据库读写
  • 断点调试
  • 文本文件读取
  • json解析
  • 配置文件的解析
  • curl下载文件

所以新语言的学习,第一步只要掌握语法,后续其实就是探索新语言所引入的新特性而已,以go语言为例,它对高并发有独到的设计。至于我们在旧语言所掌握的一些通用技能,一并迁移过来就好。go语言如何连接redis、RabbitMQ,这等通用的功能无非就是用go语言的方式引用一下包而已。

所以你看,离开舒适区其实也挺容易的吧。

总结,这里才是干货

  • 学习新技能要给自己设立一个目标作为奖励,遇到困难的时候,想想我们的达成目标后的奖励,是不是又有动力了。哪怕仅仅以看视频教程的方式学新语言,也坚持不了多久。
  • 我们掌握的每一项技能都是一个工具,遇到问题的时候,回顾一下我们的工具箱,将其中某几种工具组合起来就能解决问题。所以平时要多听多看多思考,这样我们才能向工具箱里装足够多的工具。遇到问题的时候,才有足够多的工具以供组装起来解决问题。
  • 旧语言与新语言重叠的功能,这些是时间积淀的经典,需要夯实;新语言的新特性需要格外关注,无论是找工作还是装13都用得到;旧语言的旧功能,就让它随风而去吧。

APP爬虫(2)把小姐姐的图片down下来的更多相关文章

  1. scrapy爬虫爬取小姐姐图片(不羞涩)

    这个爬虫主要学习scrapy的item Pipeline 是时候搬出这张图了: 当我们要使用item Pipeline的时候,要现在settings里面取消这几行的注释 我们可以自定义Item Pip ...

  2. 用Python做个海量小姐姐素描图

    素描作为一种近乎完美的表现手法有其独特的魅力,随着数字技术的发展,素描早已不再是专业绘画师的专利,今天这篇文章就来讲一讲如何使用python批量获取小姐姐素描画像.文章共分两部分: 第一部分介绍两种使 ...

  3. Lottie 动画里有图片怎么办?设计师小姐姐也能帮你减少开发量!

    一.序 Hi,大家好,我是承香墨影! Lottie 是 Airbnb 开源的一套跨平台的完整解决方案,设计师只需要使用 After Effectes (之后简称 AE)设计出动画之后,使用 Lotti ...

  4. 微博爬虫,python微博用户主页小姐姐图片内容采集爬虫

    python爬虫,微博爬虫,需要知晓微博用户id号,能够通过抓取微博用户主页内容来获取用户发表的内容,时间,点赞数,转发数等数据,当然以上都是本渣渣结合网上代码抄抄改改获取的! 要抓取的微博地址:ht ...

  5. python血脉贲张的cosplay小姐姐图片

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 基本环境配置 python 3.6 pycharm requests 相关模块pip安装即可 ...

  6. 微信小程序裁剪图片成圆形

    代码地址如下:http://www.demodashi.com/demo/14453.html 前言 最近在开发小程序,产品经理提了一个需求,要求微信小程序换头像,用户剪裁图片必须是圆形,也在gith ...

  7. 刷抖音太累,教你用Python把高颜值的小姐姐都爬下来慢慢看

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 星安果.AirPython 目 标 场 景 相信大家平时刷抖音短视频 ...

  8. 用python爬取之后发现果然如此,都说知乎的小姐姐漂亮

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取http ...

  9. 要不是真的喜欢学技术,谁会来用Python爬小姐姐啊

    养成习惯,先赞后看!!!不用于任何商业价值,只是自己娱乐.否则 爬虫爬的好,牢饭吃到饱.这是我们这次爬取的网址:https://www.vmgirls.com/ 很多人学习python,不知道从何学起 ...

随机推荐

  1. Ring3下无驱动移除winlogon.exe进程ctrl+alt+del,win+u,win+l三个系统热键,非屏蔽热键(子类化SAS 窗口)

    随手而作,纯粹技术研究,没什么实际意义. 打开xuetr,正常情况下.winlogon.exe注册了三个热键.ctrl+alt+del,win+u,win+l三个. 这三个键用SetWindowsHo ...

  2. Qt优雅地结束线程(两种方法都是用Mutex锁住bool变量进行修改,然后由bool变量控制耗时动作的退出,即正常退出)

    如果一个线程运行完成,就会结束.可很多情况并非这么简单,由于某种特殊原因,当线程还未执行完时,我们就想中止它.不恰当的中止往往会引起一些未知错误.比如:当关闭主界面的时候,很有可能次线程正在运行,这时 ...

  3. 『 效率工具 』Spring Boot版的轻量级代码生成器,减少70%以上的开发任务

    一. 前言 之前很着迷于代码自动生成,减少写重复代码的工作量.网络上也搜索了很久,有基于插件的,有GUI的.但其配置和学习成本都比较高,都不是很如我意. 本想自己用SpringBoot写一个,在收集相 ...

  4. Laravel --- 查询字段中使用表达式

    比如: select id, name, count(post) from ... 在laravel中: $user = $this ->select( 'id', 'name', DB::ra ...

  5. Docker-CE 安装(centos7)

    配置yum源 > cd /etc/yum.repos.d/ > mkdir repo_bak > mv *.repo repo_bak/ > wget http://mirro ...

  6. 如何两个月刷400道leetcode

    前言随着互联网寒潮的到来, 越来越多的互联网公司提高了面试的难度,其中之一就是加大了面试当中手撕算法题的比例.这里说的算法题不是深度学习,机器学习这类的算法,而是排序,广度优先,动态规划这类既考核数据 ...

  7. eclipse下jdbc数据源与连接池的配置及功能简介

    今天在做四则运算网页版的时候遇到了一个困惑,由于需要把每个产生的式子存进 数据库,所以就需要很多次重复的加载驱动,建立连接等操作,这样一方面写程序不方便,加大了程序量,另一方面,还有导致数据库的性能急 ...

  8. OSI参考模型---网络基础篇(1)

    什么是网络 网络就是将分布在不同地理位置,具有独立功能的终端(一切联网的设备都叫终端:例如电脑,手机,智能家电等等联网的设备),通过通信线路(双绞线.光纤.电话线等等)和通信设备(例如:交换机.路由器 ...

  9. MySQL 性能调优——SQL 查询优化

    如何设计最优的数据库表结构,如何建立最好的索引,以及如何扩展数据库的查询,这些对于高性能来说都是必不可少的.但是只有这些还不够,要获得良好的数据库性能,我们还要设计合理的数据库查询,如果查询设计的很糟 ...

  10. SwiftLint:代码规范检查工具介绍

    Swift-CodeStyle Checker:SwiftLint 介绍: SwiftLint 是一个用于强制检查 Swift 代码风格和规定的一个工具,基本上以 GitHub's Swift 代码风 ...