搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > Crossin的编程教室 > 一名python学习者打开双11的正确姿势

一名python学习者打开双11的正确姿势

Crossin的编程教室 2017-11-13

11月11日是个有趣的日子。客观来说,它和一年中其他364(365)天一样没什么特殊,但偏偏又总被人赋予特殊的含义。十年之前,大家谈论的是如何打发“光棍节”(跟 和菜头 一样,此节日的发源地也是本人的母校)。到了近些年,这一天显然又成了“剁手”的代名词,阿猫阿狗们早早地就开始了铺天盖地的宣传。


不过还没到正日子,这几天我就碰上了两件闹心的事:


  1. 刚下单的商品,第二天就降价了!

  2. 打算再等等的商品,准备买的时候居然价格涨回去了!


所以别看折扣打得狠,优惠券给得大方,你究竟有占到多少便宜,自己心里还真没点数。于是,我设想了这样一个方案来应对商家们的套路:


【初级版】


  1. 从关注的商品页面上找到价格,用 Python 脚本自动把价格抓下来。推荐使用 requests 库;


  2. 把 商品名称、价格、id、网址、日期保存到数据库

    一名python学习者打开双11的正确姿势


  3. 用 Windows 的计划任务或者 Linux 的 crontab 去每天去抓一遍

    一名python学习者打开双11的正确姿势

  4. 绘制出商品价格随日期变化的曲线


    一名python学习者打开双11的正确姿势


这样,当你打算出手的时候,是不是真的划算就一目了然了。


可惜事实并没有这么简单……你会发现很多商品的价格不是那么容易获取到。毕竟这也是人家的敏感数据,怎么能轻轻松松全让你扒了去,回头再写篇文章来把平台批判一番?


当然也不是完全没有办法。通常来说对方有这么几种手段:


  1. 校验你的请求头,明显的代码抓取会被屏蔽,也可能会记录你的 IP 或来源信息,限制你的请求频率。

    这个只要把 header 信息伪装好点就不是事,必要时加上 cookie。至于 IP,用几个代理轮换请求即可。这个可以参考我们之前的 IP 池项目,参见《》。


  2. 价格没有随 HTML 页面返回,而是放在别的异步请求里获取。

    通过 Chrome 开发者工具的 Network 查看页面发出的请求,耐下心找一找,一般总归能发现。


  3. 请求数据中的价格不是直接给出,而是加过密的,甚至是用图片拼出来的。

    这个比较复杂,一种方法是慢慢寻找加密或拼接的代码,这个肯定是在前端的 JS 代码中,找到之后自然就搞定。另一种方法是用 Selenium 来直接获取页面上的最终结果。图片价格的话也可以考虑用 OCR 识别。


  4. 还有更复杂的,比如对用户浏览行为进行判定,以及对异常请求的返回数值做手脚等等。因为对抗难度较大且需要具体情况具体分析,这里不展开讨论。


除此之外,一个小技巧就是,移动端网站往往反爬措施没有 PC 网页版那么严格,所以可以尝试用移动站来抓取。同样可以使用 Chrome 的开发者工具,模拟手机环境。


一名python学习者打开双11的正确姿势


那么在前面的基础上,升级一下:


【中级版】


  1. 选择移动端网站抓取,找到包含价格信息的请求;


  2. 请求时尽可能补全 header 信息;


  3. 轮换代理 IP;


  4. 难以提取信息的,尝试用 Selenium 来解决。


你以为这样就完了吗?


一名python学习者打开双11的正确姿势


看看上面这些,你满减了吗?你膨胀了吗?即使你把价格曲线画出来,也没法准确计算价格。我们不太可能为每种优惠编写计算规则,简便的改进方法是把商品的优惠描述一并抓取下来,标记上时间,为价格曲线作参考。比如这样:


一名python学习者打开双11的正确姿势


另外,光是一家平台历史价格的纵向对比还不够,几家平台的横向对比才更有意义:



【高级版】


  1. 抓取并按日期记录优惠信息;


  2. 将商品名称在其他平台上搜索,获取相关产品的价格信息;


  3. 当发生降价时发送邮件通知提醒。


去动手干吧,少年!等你开发出这套系统,每天自动抓取,明年双11的时候就可以更理性地买买买啦!(手动滑稽


什么?你觉得费劲折腾这个并没有什么用?


好吧,你以为我真的是在跟你谈论双11怎么省钱吗?


类似的工具网上已经有很多了,如果你习惯用搜索引擎解决问题,很容易就能找到,的确没有必要自己去写。而“双11”到底是真的实惠,还是平台和商家的套路,我也一点都不关心。我真正要说的是,如果你学了 Python,却不知道去哪里找项目练手进一步提高,为什么不从身边的需求出发,去开发一些工具,做一点数据的分析。你若完整实现了这样一个项目,去找一份开发工作绝对没有问题。这个价值和你多占了一两折的便宜相比,如何?


类似的案例项目,我们编程教室做了不少,其中的一些放在了 lab.crossincode.com 上,欢迎围观。






  • 点击左下角“阅读原文”,查看爬虫实战课程大纲

  • 代码问题请在论坛 bbs.crossincode.com 上发帖提问

  • 欢迎加入讨论交流群组共同学习进步




近期文章推荐阅读:








欢迎加入

Crossin的编程教室

crossincode.com

微信请加 crossin123 留言入群(新手/进阶/爬虫)


  请把我们分享给身边爱学习的小伙伴 :)  

版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《一名python学习者打开双11的正确姿势》的版权归原作者「Crossin的编程教室」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注Crossin的编程教室微信公众号

Crossin的编程教室微信公众号:crossincode

Crossin的编程教室

手机扫描上方二维码即可关注Crossin的编程教室微信公众号

Crossin的编程教室最新文章

精品公众号随机推荐

下一篇 >>

Python 之父同款!