Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >闲鱼上哪些商品抢手?Python 分析后告诉你

闲鱼上哪些商品抢手?Python 分析后告诉你

作者头像
数据森麟
发布于 2020-02-27 05:20:54
发布于 2020-02-27 05:20:54
1.7K10
代码可运行
举报
文章被收录于专栏:数据森麟数据森麟
运行总次数:0
代码可运行
作者:星安果

来源:AirPython

阅读文本大概需要 10 分钟。

1

目 标 场 景

经常看到有朋友在闲鱼卖些小东西又或是自己擅长的一些技能,都能为他们带来不错的 睡后收入。

闲鱼上大量的商品,很难精准判断哪些受欢迎,哪些好卖;一个个录入数据去做数据分析,浪费时间的同时,效率也极其的低效。

本篇文章的目的是利用 Python 自动化 来获取某类商品中最好卖的商品以供参考。

ps:本文仅限用于技术交流,请勿用于其他用途。

2

准 备 工 作

在编写代码之前,需要做如下准备工作:

1、配置好 Android ADB 开发环境

2、Python 虚拟环境内安装 pocoui 依赖库

3、安装数据可视化依赖库 pyecharts

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# pocoui
pip3 install pocoui

# 数据可视化图表
pip3 install pyecharts -U

3

编 写 代 码

我们分 7 个步骤来实现这个功能,分别是:打开目标应用客户端、检索关键字到商品列表界面、计算最佳滑动距离、筛选商品、获取商品链接地址、写入文件排序并统计商品、配置参数。

1 步,使用 pocoui 自动化打开目标应用。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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('进入闲鱼主界面')

进入到闲鱼首页之后,应用端会拿到剪切板的数据,当存在特定规律的口令的时,会立马弹出一个对话框,因此需要模拟关闭对话框的操作。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 如果指定时间内内有淘口令,就关闭
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 步操作了。

通过要检索的关键字,模拟输入到输入框内,然后点击搜索按钮,一直等待搜过列表出现为止。

另外,为了更加方便地处理数据,商品列表切换到列表模式,即一行只显示一个商品。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 拿到商品的坐标,进而得到每一项商品的高度。

最后,通过观察屏幕中出现商品的数目得到最佳滑动距离。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def __get_good_swipe_distance(self):
    """
    获取每次滑动,最合适的距离
    :return:
    """
    element = Element()
    # 保存当前的UI树到本地
    element.get_current_ui_tree()

    # 第一个商品Item的坐标
    position_item = element.find_elment_position_by_id_and_index("com.taobao.idlefish:id/card_root",
                                                                     "1")
    # 商品的高度
    item_height = position_item[1][1] - position_item[0][1]

    # 通过观察,当前屏幕有3件商品
    return item_height * 3

4 步,筛选商品。

上面的步骤拿到最佳的滑动距离,不停的滑动页面遍历列表元素的子 Item。

需要注意的是,为了避免滑动惯性导致的误差,每一次的滑动时长最好设置为 2s 以上。

通过商品 Item 筛选出想要数目大于预设数字的商品。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 多少人想要
want_element_parent = item.offspring('com.taobao.idlefish:id/search_item_flowlayout')

if want_element_parent.exists():
     # 想要数/已付款数目
     want_element = want_element_parent.children()[0]

     want_content = want_element.get_text()

     # 过滤掉【已付款】等其他商品,只保留个人发布商品
     if '人想要' not in want_content:
            continue

      # 拿到商品想要的具体数目,代表商品热度
      want_num = get_num(want_content)

      if int(want_num) < self.num_assign:
             # print('不达标,过滤掉')
             pass
      else:
            # 商品想要数达标,加入统计

5 步,获取商品链接地址。

对于上一步满足条件的商品,点击商品 Item 进入到商品详情页面。

接着点击右上角的分享按钮,会立即弹出分享对话框。

然后点击口令控件,会提示口令复制到系统剪切板成功

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 点击更多
while True:
     if self.poco('com.taobao.idlefish:id/ftShareName').exists():
          break
     print('点击更多~')
     perform_click(self.poco(text='更多'))

# 点击复制淘口令
perform_click(self.poco('com.taobao.idlefish:id/ftShareName', text='淘口令'))

# 拿到口令码
taobao_code_element = self.poco('com.taobao.idlefish:id/tvWarnDetail')

taobao_code = taobao_code_element.get_text()        

6 步,写入商品、排序并统计数据。

将上面获取到的商品标题、想要数、分享地址写入到 CSV 文件中。

然后读取数据文件,通过对表格中的第二列进行反向排序,使商品按照想要数进行降序排列。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def __sort_result(self):
    """
    对爬取的结果进行排序
    :return:
    """
    reader = csv.reader(open(self.file_path), delimiter=",")

    # 头部标题
    head_title = next(reader)

    # 按照第二列进行逆序排列
    sortedlist = sorted(reader, key=lambda x: (int(x[1])), reverse=True)

    # 写入头部数据
    write_to_csv(self.file_path, [(head_title[0], head_title[1], head_title[2])], False)

    for value in sortedlist:
       write_to_csv(self.file_path, [(value[0], value[1], value[2])], False)

    return sortedlist

最后拿到前 10 项数据,利用 pyecharts 生成统计图表。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def draw_image(self, sortedlist):
     """
     画图
     :param sortedlist:
     :return:
     """

     # 标题列表
     titles = []

     # 销量
     sales_num = []

     # 拿到爬取结果的标题、销量两个列表
     with open(self.file_path, 'r') as csvfile:
         # 读取文件
         reader = csv.DictReader(csvfile)

         # 加入列表中
         for row in reader:
             titles.append(row['title'])
             sales_num.append(row['num'])

     # 数目限制
     if len(titles) > self.num:
         titles = titles[:self.num]
         sales_num = sales_num[:self.num]

     # 画图
     bar = (
            Bar()
                .add_xaxis(titles)
                .add_yaxis("哪些好卖", sales_num)
                .set_global_opts(title_opts=opts.TitleOpts(title="我要卖货"))
        )
     bar.render('%s.html' % self.good_msg)

7 步,配置参数。

编写 yaml 文件,指定要爬取商品的关键字、爬取时间、想要数考核指标数、筛选商品数目。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
goods:
  # 搜索商品1,包含搜索关键字、爬取时间
  good1:
    key_word: '资料'   # 搜索关键字
    key_num: 100  # 筛选【想要数】的临界点
    num: 10      # 只筛选爆款
    time: 600   # 爬取时间()

4

结 果 结 论

提前配置好商品关键字、爬取时间等参数,即可以爬取到符合要求的、最好卖的商品数据,最终以图表的方式展示出来。

我已经将全部源码上传到后台,关注公众号后回复「 卖东西 」即可获得下载链接。

如果你觉得文章还不错,请大家点赞分享下。你的肯定是我最大的鼓励和支持。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-02-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据森麟 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
卖东西
卖东西
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
用 Python 告诉你!最近 24 小时内朋友圈发生了什么
之前有一篇 文章 使用 Airtest 实现自动看新闻薅羊毛这一操作,其实 Airtest 功能远不止此。
小小詹同学
2019/07/12
1.1K0
用 Python 告诉你!最近 24 小时内朋友圈发生了什么
薅羊毛 | Python 自动化带你轻松赚钱
最近,有一个朋友告诉我,她在某平台上购买了一部手机,收到货之后发现商品质量挺好的,价格也不贵。
数据森麟
2019/10/15
1.1K0
薅羊毛 | Python 自动化带你轻松赚钱
自动化篇 | 你想要的闲鱼日常操作,Python 给你实现了
前篇文章讲了如何在 iOS 端使用 Airtest 实现自动化的操作,本篇将继续带大家做 iOS 端的自动化项目。
AirPython
2020/03/23
3.6K2
自动化篇 | 你想要的闲鱼日常操作,Python 给你实现了
薅羊毛 | 让Python每天帮你薅一个早餐钱
以今日头条极速版为首,包含趣头条、东方头条、全名小视频在内的 App 都有看新闻、视频送金币的活动,当金币达到一定量后,就可以提现到微信、支付包。
sergiojune
2019/05/15
9310
薅羊毛 | 让Python每天帮你薅一个早餐钱
Python实现自动抢红包功能
可能有人每天都忙碌于各类微信群中,专注抢红包。那是否可以利用 Python 实现自动抢红包呢?
axiomxs
2021/11/26
2.2K0
Python实现自动抢红包功能
带你用 Python 实现自动化群控设备
群控,相信大部分人都不会陌生!印象里是一台电脑控制多台设备完成一系列的操作,更多的人喜欢把它和 Hui 产绑定在一起!
AirPython
2020/08/15
1.2K0
聊聊 Airtest 自动化工具
很多读者看过之前的文章,发现我使用最多的是一款 Airtest 的自动化测试框架。
测试开发社区
2019/10/31
1.7K0
聊聊 Airtest 自动化工具
GitHub 超级火:超全开源爬虫工具箱!
最近国内一位开发者在 GitHub 上开源了个集众多数据源于一身的爬虫工具箱——InfoSpider,一不小心就火了!!!
我被狗咬了
2020/11/04
7460
GitHub 超级火:超全开源爬虫工具箱!
Python爬取某宝商品数据案例:100页的价格、购买人数等数据
随着互联网时代的到来,人们更加倾向于互联网购物,某宝又是电商行业的巨头,在某宝平台中有很多商家数据,今天带大家使用python+selenium工具获取这些公开的。
松鼠爱吃饼干
2020/09/15
1.6K0
Python爬取某宝商品数据案例:100页的价格、购买人数等数据
谁偷偷删了你的微信?别慌!Python 帮你都揪出来了
不知道你有没有经历过,想联系一位很长时间没有联系的朋友,发现对方很早以前已经把你删除了,而你还一无所知。
小小詹同学
2019/08/01
9700
谁偷偷删了你的微信?别慌!Python 帮你都揪出来了
airtest测试用例_Airtest 常用方法
auto_setup(__file__,devices=[“Android://127.0.0.1:5037/SJE5T17B17”])#方法二:用connect_device()方法连接设备
全栈程序员站长
2022/11/15
1.7K0
天猫商品详情采集上架拼多多店铺(淘宝商品详情上架至拼多多店铺)采集接口代码展示
业务场景:大家有探讨稳定采集天猫商品详情搬货至拼多多店铺,采集数据包括:获取商品列表和商品详情页面数据,包括:价格,主图、价格、标题,sku,sku描述等页面上有的数据接口完整解决方案。这个引起了我技术挑战的兴趣。目前,自己做了压测,QPS高、出滑块概率极低,API整体稳定,可满足业务场景的性能需求。
wx19970108018
2023/03/06
7060
天猫商品详情采集上架拼多多店铺(淘宝商品详情上架至拼多多店铺)采集接口代码展示
Python爬虫学习之天猫商品数据爬虫
天猫商品数据爬虫使用教程 下载chrome浏览器 查看chrome浏览器的版本号,对应版本号的chromedriver驱动 pip安装下列包 pip install selenium pip install pyquery 登录微博,并通过微博绑定淘宝账号密码 在main中填写chromedriver的绝对路径 在main中填写微博账号密码 #改成你的chromedriver的完整路径地址 chromedriver_path = "/Users/bird/Desktop/chromedriv
python学习教程
2019/12/27
1.1K0
用 Python 在朋友圈中游遍全球
十一长假,相信大部分的朋友这会应该是在全国各地浪或者是在浪的路上,朋友圈成为你们表演的场所。
小小詹同学
2019/10/10
9700
用 Python 在朋友圈中游遍全球
淘宝数据分析实战:美食霸榜销量No.1的竟然是....
想必大家都喜欢囤货吧,小编购物车里全是加购的零食,闲来无事,就顺手爬了淘宝搜索美食出来的商品信息,简单做了个分析,借此案例给大家学习参考。
1480
2020/02/19
4850
淘宝商品sku接口,商品详情数据,商品销量数据,商品优惠券,行业分析,竞品分析,品牌监控接口代码展示
业务场景:作为全球最大的 B2C 电子商务平台之一,淘宝平台提供了丰富的商品资源,吸引了大量的全球买家和卖家。为了方便开发者接入淘宝平台,淘宝平台提供了丰富的 API 接口,其中商品详情接口是非常重要的一部分。大家有探讨稳定采集淘宝整站实时商品详情评论数据接口,通过该接口开发者可以更好地了解商品的情况,商品详情详细信息查询,数据参数包括:获取商品列表主图、价格、标题,sku,商品评论日期,评论内容,评论图片,买家昵称,追评内容,商品属性,追评属性图片等页面上有的数据完整解决方案帮助买家更准确地进行商品选购。这个引起了我技术挑战的兴趣。目前,自己做了压测,QPS 高、出滑块概率极低,API 整体稳定,可满足业务场景的性能需求。
wx19970108018
2023/03/23
1.1K0
淘宝商品sku接口,商品详情数据,商品销量数据,商品优惠券,行业分析,竞品分析,品牌监控接口代码展示
Python教你挑选礼物
又到了一年一度的教师节,每次教师节大家都会烦恼不知道送什么礼物?尤其是对于理工男来说,更是一个让人头大的问题。我今天就和大家分享一个用Python爬取商品信息的项目,希望可以给大家选礼物时提供一个参考。
stormwen
2019/09/12
1.2K0
Python教你挑选礼物
数据可视化|用Python实现手机抓包,获取当当图书差评数据!
本次学习了手机抓包的相关知识,了解了Charles-mitmproxy-Appium的基本使用,通过对当当图书评论的爬取,得以实践。
龙哥
2019/07/30
1.1K0
数据可视化|用Python实现手机抓包,获取当当图书差评数据!
从登陆到爬取:Python反反爬获取某宝成千上万条公开商业数据
chrom浏览器的驱动器下载地址:http://npm.taobao.org/mirrors/chromedriver/
荣仔_最靓的仔
2021/02/02
1.2K0
从登陆到爬取:Python反反爬获取某宝成千上万条公开商业数据
淘宝商品信息定向爬虫
最近在学习数据分析的时候,提前学习了爬虫,其实在很早之前就学习过Python了,但是后来学习Android了,没有将Python很好的实践。但是学习了爬虫之后,我觉得自己写爬虫收集数据,放在自己的服务器上,然后再用自己的App展示出来,就不用再苦于没有数据了。但是,要想写出好的爬虫,也是一件不容易的事情,需要多加练习。
GitOPEN
2019/01/29
1.6K0
淘宝商品信息定向爬虫
推荐阅读
相关推荐
用 Python 告诉你!最近 24 小时内朋友圈发生了什么
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验