<commit_before>---
layout: post
title: 简单的 kindle 电子书价格抓取
categories: kindle
description: 一个简单的 kindle 电子书价格抓取程序，定时汇报订阅当天电子书价格
keywords: kindle, 价格抓取
---

上班之后，路途漫长，习惯了路上看些书籍，既用来打发些路上的时间，用可以充实下自己的知识面，何乐不为。放在穷比的学生时代，我也会觉得竟然有人傻到去买电子书，网上一搜一大堆(如果现在你也是这种想法，可以给你些时间来成长转变，否则还是点击右上角关闭，不送！)。直到一哥们告诉我，我们这些搞互联网的都不去尊重知识产权，怎么能够指望别人来买单。给我造成很大冲击，那个时候才意识到，互联网的迅猛发展，已经给人们灌输了根深蒂固的错误观念：软件就不应该要钱，谁去使用花钱的软件就是大傻逼。学生时代，穷比当然无可厚非了，工作了之后，还是有能力来支持正版。但是支持知识产权是一回事，买到物美价廉的知识是另一回事。留心点的同学都会发现，亚马逊上面电子书价格波动太厉害了，一本电子书价格波动能够毫无理由的从一两块钱到七八十不等，着实令人不爽。尤其点名批评下某宝，某东，价格波动毫无规律，欺骗消费者，狗东做的最过分。我用的几个比价软件没有抓取amazon电子书的数据，于是萌生了一个自己搞一个的想法。毕竟只是自己用，没必要花太多精力去完善什么可靠性，稳定性，因此花了周末一天的时间，简单的实现了定时获取订阅电子书价格，并邮件告知的功能。闲言碎语扯太多，下面简单说下思路：

1， 获取订阅电子书的url

首先想到的是模拟客户端，来向amazon发送请求，感觉太low；又想调用amazon的api，去获取产品信息，灵活性大，但是稍微看了下，学习成本太大，我的时间也有限；插一句，网上说amazon反爬虫做的很好。本人是服务端gg，对前端知识了解不多，最终还是选择去从网页源码中抽出电子书价格，还是上面说的，自用而已，简单为上，殊途同归。
amazon使用的是https协议，怎么去抓取它的网页呢？既然简单，就简单到底吧，最终还是选择用wget去下载订阅的数据页面。
> 这里url的获取有个小技巧：首先搜索想订阅的书籍，进入之后，将该书的url复制到文本中，将&全部替换为\&，然后wget才能正确执行命令(想想为什么？)因为是https的链接，所以需要加上参数 --no-check-certificate， 运行之后是不是不行，会跳转好几次最后返回个错误代码，别灰心，这个时候将最后一次跳转的url替换现在的下载试试，bingo，这才是我们最终需要的。 ![amazon pic](../images/blog/amazon.png) `多找几个是不是发现最终的url有规律可循 :-P` <commit_msg>amazon update<commit_after>---
layout: post
title: 简单的 kindle 电子书价格抓取
categories: kindle
description: 一个简单的 kindle 电子书价格抓取程序，定时汇报订阅当天电子书价格
keywords: kindle, 价格抓取
---

上班之后，路途漫长，习惯了路上看些书籍，既用来打发些路上的时间，用可以充实下自己的知识面，何乐不为。放在穷比的学生时代，我也会觉得竟然有人傻到去买电子书，网上一搜一大堆(如果现在你也是这种想法，可以给你些时间来成长转变，否则还是点击右上角关闭，不送！)。直到一哥们告诉我，我们这些搞互联网的都不去尊重知识产权，怎么能够指望别人来买单。给我造成很大冲击，那个时候才意识到，互联网的迅猛发展，已经给人们灌输了根深蒂固的错误观念：软件就不应该要钱，谁去使用花钱的软件就是大傻逼。学生时代，穷比当然无可厚非了，工作了之后，还是有能力来支持正版。但是支持知识产权是一回事，买到物美价廉的知识是另一回事。留心点的同学都会发现，亚马逊上面电子书价格波动太厉害了，一本电子书价格波动能够毫无理由的从一两块钱到七八十不等，着实令人不爽。尤其点名批评下某宝，某东，价格波动毫无规律，欺骗消费者，狗东做的最过分。我用的几个比价软件没有抓取amazon电子书的数据，于是萌生了一个自己搞一个的想法。毕竟只是自己用，没必要花太多精力去完善什么可靠性，稳定性，因此花了周末一天的时间，简单的实现了定时获取订阅电子书价格，并邮件告知的功能。闲言碎语扯太多，下面简单说下思路：

1， 获取订阅电子书的url

首先想到的是模拟客户端，来向amazon发送请求，感觉太low；又想调用amazon的api，去获取产品信息，灵活性大，但是稍微看了下，学习成本太大，我的时间也有限；插一句，网上说amazon反爬虫做的很好。本人是服务端gg，对前端知识了解不多，最终还是选择去从网页源码中抽出电子书价格，还是上面说的，自用而已，简单为上，殊途同归。
amazon使用的是https协议，怎么去抓取它的网页呢？既然简单，就简单到底吧，最终还是选择用wget去下载订阅的数据页面。
> 这里url的获取有个小技巧：首先搜索想订阅的书籍，进入之后，将该书的url复制到文本中，将&全部替换为\&，然后wget才能正确执行命令(想想为什么？)因为是https的链接，所以需要加上参数 --no-check-certificate， 运行之后是不是不行，会跳转好几次最后返回个错误代码，别灰心，这个时候将最后一次跳转的url替换现在的下载试试，bingo，这才是我们最终需要的。 ![amazon pic](https://github.com/guyannanfei25/guyannanfei25.github.io/blob/master/images/blog/amazon.png) `多找几个是不是发现最终的url有规律可循 :-P` 
{'fraction_non_alphanumeric': 0.10688259109311742, 'fraction_numerical': 0.0024291497975708503, 'mean_word_length': 21.26126126126126, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 5, 'https://': 1, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3486497', 'n_tokens_mistral': 2212, 'n_tokens_neox': 2685, 'n_words': 57}