「这是我参与11月更文挑战的第12天,活动详情查看:2021最后一次更文挑战」。
前言
利用利用Python 自动化来获取某类商品中最好卖的商品以供参考。废话不多说。
让我们愉快地开始吧~
开发工具
Python版本: 3.6.4
相关模块:
pyecharts模块;
以及一些Python自带的模块。
环境搭建
安装Python并添加到环境变量,pip安装需要的相关模块即可。
准备工作
1、配置好 Android ADB 开发环境
2、Python 虚拟环境内安装 pocoui 依赖库
1 | python复制代码# pocoui\ |
步骤
我们分 7 个步骤来实现这个功能,分别是:打开目标应用客户端、检索关键字到商品列表界面、计算最佳滑动距离、筛选商品、获取商品链接地址、写入文件排序并统计商品、配置参数。
第 1 步,使用 pocoui 自动化打开目标应用。
1 | python复制代码def __pre(self): |
进入到闲鱼首页之后,应用端会拿到剪切板的数据,当存在特定规律的口令的时,会立马弹出一个对话框, 因此需要模拟关闭对话框的操作。
1 | python复制代码# 如果指定时间内内有淘口令,就关闭\ |
第 2 步,检索关键字到商品列表界面
通过要检索的关键字,模拟输入到输入框内,然后点击搜索按钮,一直等待搜过列表出现为止。
另外,为了更加方便地处理数据,商品列表切换到列表模式,即一行只显示一个商品。
1 | python复制代码def __input_key_word(self): |
第 3 步,计算最佳滑动距离。
为了保证爬取数据的高效性,获取计算出每次滑动的最佳距离。
首先先拿到当前界面的 UI 控件树,然后通过控件的属性 ID 拿到商品的坐标,进而得到每一项商品的高度。
最后,通过观察屏幕中出现商品的数目得到最佳滑动距离。
1 | python复制代码def __get_good_swipe_distance(self): |
第 4 步,筛选商品。
上面的步骤拿到最佳的滑动距离,不停的滑动页面遍历列表元素的子 Item。
需要注意的是,为了避免滑动惯性导致的误差,每一次的滑动时长最好设置为 2s 以上。
通过商品 Item 筛选出想要数目大于预设数字的商品。
1 | python复制代码# 多少人想要 |
第 5 步,获取商品链接地址
对于上一步满足条件的商品,点击商品 Item 进入到商品详情页面。
接着点击右上角的分享按钮,会立即弹出分享对话框。
然后点击口令控件,会提示口令复制到系统剪切板成功。
1 | python复制代码# 点击更多 |
第 6 步,写入商品、排序并统计数据
将上面获取到的商品标题、想要数、分享地址写入到 CSV 文件中。
然后读取数据文件,通过对表格中的第二列进行反向排序, 使商品按照想要数进行降序排列。
1 | python复制代码def __sort_result(self): |
最后拿到前 10 项数据,利用 pyecharts 生成统计图表。
第 7 步,配置参数
编写 yaml 文件,指定要爬取商品的关键字、爬取时间、想要数考核指标数、筛选商品数目。
1 | python复制代码goods: |
效果展示
提前配置好商品关键字、爬取时间等参数,即可以爬取到符合要求的、最好卖的商品数据,最终以图表的方式展示出来。
本文转载自: 掘金