# AmazonDiscount **Repository Path**: zeroxer/amazondiscount ## Basic Information - **Project Name**: AmazonDiscount - **Description**: 亚马逊满200减120书单爬虫 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2017-04-14 - **Last Updated**: 2021-06-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 亚马逊读书节图书筛选 `2017年4月13日17:54:10` ### 简介 使用Python爬虫获取所有读书节图书, 保存到数据库中, 然后利用豆瓣评分对满足一定条件的书籍进行筛选。 ### 后期功能 1. 用户添加书单,利用书单进行筛选匹配 2. 用户添加筛选条件,实时检索 ### 高级功能 1. 在系统筛选出的书籍中,针对用户进行推荐 ## 开发过程 ### 此页面是JavaScript生成的 使用BeautifulSoup加载完成的对象,保存成文件发现里面含有的师Js代码,不含书籍项目信息 - 解决方法尝试:使用 `Selenium` 和 `PhantomJS` 等自动化测试组件 ## 运行展示 ![程序运行展示](https://git.oschina.net/uploads/images/2017/0626/105954_2c6de82e_606739.png "程序运行展示") #反思 1.【常识--流程】S >第一次爬大型网站,没有基础,对流程不清楚,捣鼓了一下午才知道抓取网页首先应该弄明白网站是不是动态的,是不是Javascript脚本动态加载的。 2.【猜想】selenium + PhantomJS >电商类的网站对于数据库的实时性和商品信息的准确性有很高的要求,所以电商网站的网页应该都是动态加载的,使用静态网站的爬虫无法获取数据,应该使用无头浏览器等。 3.【技巧】初始url的设置 >始终跳转到目标url的组件显示的url链接,可以让PhantomJS频繁使用。 `分析原因` >应该是PhantomJS使用自己的内部组件进行访问,执行url的跳转和session的建立,不会像直接访问目标url那样,PhantomJS中没有session和cookie等连接信息。 4.【性能优化】使用`多线程 + 分布式`对程序性能进行优化 >thread >多线程如果没有分布式的环境,也会很容易通过IP检测到爬虫的存在。 >现在手中有腾讯的服务器,但是此次项目目标已经基本完成,由于时间问题,暂时不增加新的功能。 5.【程序功能的阶段分解】 > 先从亚马逊获取所有目标图书的ISBN,然后再用这些数据到豆瓣查询信息。 > 分成两个独立的程序来完成。 ## 发现 1. 亚马逊网站上关于ISBN的展示有很多地方出错了 2. 使用time等待一段时间可以防止被网站检测到 # 结束语 > 【完成】所有书籍题目以及价格、作者信息的获取 > 【未完成】未完成所有ISBN信息的获取 原因: 1. 时间不够,晚上熄灯电脑支撑不到第二天。 2. 如果程序中的等待时间过短会被组织连接。 3. 技术上没有足够的基础,比如说使用分布式、多线程等。 # 【总结】 1. 编写程序之前首先确定功能模块和整体结构框架,不然做模块测试的时候非常麻烦,尤其是Python这种使用缩进来控制程序块的。 2. 使用 TODO 来定义功能模块,做完一个模块测试一个模块。 3. 为项目设定基本目标和高级目标。完成基础之后再做拓展。 4. 数据库和文件的存储做准备。 5. 忠于现实,忠于项目,忠于自己(对自己负责)。