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. c# json key转大小写

    有需求需要将json的字段转换为小写,使用正则表达式实现,代码如下 正则表达式为   \"[a-zA-Z0-9]+\"\s*: MatchCollection ms = Regex ...

  2. Qt 之 样式表的使用——样式选择器(上下篇,很详细)

    http://blog.csdn.net/goforwardtostep/article/details/60884870 http://blog.csdn.net/goforwardtostep/a ...

  3. xmanager小技巧

    使用manager时候,左键选中之后,直接右键粘贴,能带来效率的提升.虽然是小技巧,但有人还是不知道,这里简单写一下,供需要的同学参考. 简单二步设置: 1.工具-选项

  4. 对shell脚本进行加密

    用shell脚本对系统进行自动化维护,简单,便捷而且可移植性好.但shell脚本是可读写的,很有可能会泄露敏感信息,如用户名,密码,路径,IP等.同样,在shell脚本运行时会也泄露敏感信息.请问如何 ...

  5. 《阿里巴巴Java开发手册》改名《Java开发手册》,涵盖史无前例的三大升级

    2019.06.19 <阿里巴巴Java开发手册>时隔一年,发布更新1.5.0华山版.同时,将更名为<Java开发手册>,涵盖史无前例的三大升级 1)鉴于本手册是社区开发者集体 ...

  6. BootStrap4.0Demo+轮播素材记录

    整理一些关于前端的东西: BootStrap4.0Demo: 官方DEMO:http://code.z01.com/v4/components/carousel.html 下午翻了点不错的轮播素材: ...

  7. Windows使用Python虚拟环境

    Windows使用virtualenv和virtualenvwrapper-win 在Windows上使用virtualenv进行多版本Python隔离. 安装Python 在Python官网下载Py ...

  8. 通用shell函数库

    1.输出字体颜色库 #!/bin/bash export black='\E[0m\c' export boldred='\E[1;31m\c' export boldgreen='\E[1;32m\ ...

  9. CentOS 网络互通情况下把一个Linux服务器的文件发送到另一个服务器

    scp -r  文件名/目录名 root@192.168.2.144:/home/hsw -r   发送目录使用,表示把该目录下的所有子目录以及文件发送过去

  10. 看看大神 Paul Graham 对如何学习编程的回答

    前言 我翻阅自己之前写的博客文章,发现在 2015 年我刚开始学习编程的时候,翻译了一段 Paul Graham 关于"How can I learn to program?"的回 ...