yokon's blog

Flask的经典错误

在编写 Flask 应用的单元测试,离线应用时候经常会遇到,*RuntimeError: Working outside of application context.*的报错。这个报错是在没有激活程序上下文情况下,进行了一些程序上下文或请求上下文的操作。先看下面的两段代码:

......

Nginx场景实践

Nginx(读作:恩静 X)是一个高性能的HTTP和反向代理服务器,一个邮件代理以及通用的TCP/ UDP代理服务器。本篇文章是我最近使用Nginx的记录。你发现本站已经是全站https了,而本站的图片是放在七牛云的。之所以可以使用https://www.yukun.com/qiniu/xxx访问到存放在七牛的图片,是因为使用了nginx的反向代理。

......

优雅的写判断语句

一个程序之所以能自动做很多任务,是因为我们给他做好了条件判断。项目中,我们难免会使用if/else判断逻辑语句。对简单的情况而言,使用逻辑语句会很清晰简洁,而项目情况一旦复杂,或者判断层次变多,盲目的使用if/else语句就不免会显得难看,而且难以维护和扩展。

......

Python爬虫(15):煎蛋网加密处理方式

最近一直有朋友问我改版的煎蛋网妹子图怎么爬,因为他们花费精力结果抓了一整个文件夹的防盗图。我之前在很久以前的一篇博客说过,对于这种js处理的网页,要想抓取到网页上看到的数据,大致有三种方法:

  • Selenium结合浏览器驱动,直接获取加载js后的页面,解析数据。这种方法最为简单粗暴,不过速度会慢一点,处理煎蛋这样的网页有点大材小用;
  • 直接使用python执行js文件,幸运的是PyV8库很符合要求,不过PyV8似乎不支持python3,python3可以使用PyExecJS库。这种方法也很简单,不过如果执行的js文件依赖pquery库的话,比较麻烦;
  • 用python模拟js加密方式,拿到加密处理后的数据,这种方法就是本篇主要讨论的内容,优点是依赖少速度快,缺点是如果煎蛋加密方式改了,需要跟着改。

分析网页

post34_1.png

......