当前位置: 首页 > 科技观察

闲鱼上最受欢迎的产品是什么?Python解析告诉你

时间:2023-03-20 14:08:16 科技观察

1。目标场景经常看到小伙伴在闲鱼卖小东西或者自己擅长的一些技能,能给他们带来不错的睡后收入。闲鱼上商品众多,很难准确判断哪些受欢迎,哪些好卖;一项一项地录入数据进行数据分析,既浪费时间,又极其低效。本文的目的是利用Python自动化获取某类产品中的畅销产品,以供参考。ps:本文仅作技术交流,请勿用于其他用途。2、准备工作在编写代码之前,需要做以下准备工作:(1)配置AndroidADB开发环境(2)在Python虚拟环境中安装pocoui依赖库(3)安装数据可视化依赖库pyecharts#pocouipip3installpocoui#数据可视化图表pip3installpyecharts-U3。我们将代码分为7个步骤来实现这个功能,分别是:打开目标应用客户端,检索关键词到商品列表界面,计算优秀滑动距离,过滤商品,获取商品链接地址,写入文件排序和统计商品及配置参数。第一步,使用pocoui自动化打开目标app。def__pre(self):"""Preparation: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('进入闲鱼主界面')进入闲鱼首页后,应用端会获取剪贴板数据。当有特定的常规密码时,会立即弹出一个对话框,所以需要模拟关闭对话框的操作。#如果指定时间内有淘宝密码,则关闭foriinrange(10,-1,-1):close_element=self.poco('com.taobao.idlefish:id/ivClose')ifclose_element.exists():close_element.click()breaktime.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)#点击搜索按钮whileTrue:#等待搜索结果列表出现ifnotself.poco('com.taobao.idlefish:id/list_recyclerview').exists():perform_click(self.poco('com.taobao.idlefish:id/search_button',text='search'))else:break#等待商品列表完全出现self.poco('com.taobao.idlefish:id/list_recyclerview').wait_for_appearance()#切换到列表perform_click(self.poco('com.taobao.idlefish:id/switch_search'))第三步,计算优滑距离。为了保证爬取数据的效率,Get会计算出每次滑动的最佳距离。先获取当前界面的UI控件树,然后通过控件的属性ID获取商品的坐标,再获取每个商品的高度。最后,通过观察出现在屏幕上的商品数量,得到最佳滑动距离。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]#通过观察,当前screen有3个itemreturnitem_height*3第四步,筛选items。以上步骤得到一个极好的滑动距离,不断滑动页面遍历列表元素的子项。需要注意的是,为了避免滑动惯性带来的误差,每次滑动的持续时间最好设置为2s以上。通过产品Item过滤掉数量大于预设数量的产品。#有多少人想要want_element_parent=item.offspring('com.taobao.idlefish:id/search_item_flowlayout')ifwant_element_parent.exists():#want数量/支付金额want_element=want_element_parent.children()[0]want_content=want_element.get_text()#过滤掉【付费】等其他产品,只保留个人发布的产品if'peoplewant'notinwant_content:continue#获取你想要的产品的具体数量,代表产品的热度want_num=get_num(want_content)ifint(want_num)self.num:titles=titles[:self.num]sales_num=sales_num[:self.num]#Drawingbar=(Bar().add_xaxis(titles).add_yaxis("哪些卖得好",sales_num).set_global_opts(title_opts=opts.TitleOpts(title="我要卖")))bar.render('%s.html'%self.good_msg)第七步,配置参数。写一个yaml文件,指定要爬取的商品关键词,爬取时间,你要的评价指标个数,过滤的商品个数。goods:#搜索商品1,包括搜索关键词和爬取时间good1:key_word:'data'#搜索关键词key_num:100#过滤临界点[wantnumber]num:10#只过滤热门商品time:600#爬取时间(秒)4、结果与结论预先配置好商品关键词、爬取时间等参数后,就可以爬取到符合要求的畅销商品数据,最后以图表的形式展现出来。