1.目标场景
经常看到有朋友在闲鱼卖些小东西又或是自己擅长的一些技能,都能为他们带来不错的 睡后收入。
闲鱼上大量的商品,很难精准判断哪些受欢迎,哪些好卖;一个个录入数据去做数据分析,浪费时间的同时,效率也极其的低效。
本篇文章的目的是利用 Python 自动化 来获取某类商品中很好卖的商品以供参考。
ps:本文仅限用于技术交流,请勿用于其他用途。
2.准备工作
在编写代码之前,需要做如下准备工作:
1、配置好 Android ADB 开发环境
2、Python 虚拟环境内安装 pocoui 依赖库
3、安装数据可视化依赖库 pyecharts
- # pocoui
- pip3 install pocoui
-
- # 数据可视化图表
- pip3 install pyecharts -U
3.编写代码
我们分 7 个步骤来实现这个功能,分别是:打开目标应用客户端、检索关键字到商品列表界面、计算优秀滑动距离、筛选商品、获取商品链接地址、写入文件排序并统计商品、配置参数。
第 1 步,使用 pocoui 自动化打开目标应用。
- def __pre(self):
- """
- 准备工作
- :return:
- """
- home()
- stop_app(package_name)
- start_my_app(package_name, activity)
-
-
- # 等待到达桌面
- self.poco(text='闲鱼').wait_for_appearance()
- self.poco(text='鱼塘').wait_for_appearance()
- self.poco(text='消息').wait_for_appearance()
- self.poco(text='我的').wait_for_appearance()
-
- print('进入闲鱼主界面')
进入到闲鱼首页之后,应用端会拿到剪切板的数据,当存在特定规律的口令的时,会立马弹出一个对话框,因此需要模拟关闭对话框的操作。
- # 如果指定时间内内有淘口令,就关闭
- for i in range(10, -1, -1):
- close_element = self.poco('com.taobao.idlefish:id/ivClose')
- if close_element.exists():
- close_element.click()
- break
- time.sleep(1)
打开应用之后,就可以进行第 2 步操作了。
通过要检索的关键字,模拟输入到输入框内,然后点击搜索按钮,一直等待搜过列表出现为止。
另外,为了更加方便地处理数据,商品列表切换到列表模式,即一行只显示一个商品。
- def __input_key_word(self):
- """
- 输入关键字
- :return:
- """
- # 进入搜索界面
- perform_click(self.poco('com.taobao.idlefish:id/bar_tx'))
-
- # 搜索框内输入文本
- self.poco('com.taobao.idlefish:id/search_term').set_text(self.good_msg)
-
- # 点击搜索按钮
- while True:
- # 等待检索结果列表出现
- if not self.poco('com.taobao.idlefish:id/list_recyclerview').exists():
- perform_click(self.poco('com.taobao.idlefish:id/search_button', text='搜索'))
- else:
- break
-
- # 等待商品列表完全出现
- self.poco('com.taobao.idlefish:id/list_recyclerview').wait_for_appearance()
-
- # 切换到列表
- perform_click(self.poco('com.taobao.idlefish:id/switch_search'))
第 3 步,计算优秀滑动距离。
为了保证爬取数据的高效性,获取计算出每次滑动的优秀距离。
首先先拿到当前界面的 UI 控件树,然后通过控件的属性 ID 拿到商品的坐标,进而得到每一项商品的高度。
(编辑:ASP站长网)
|