一个例子带你入门影刀编码版(二)

文章结构

  • 摘要
  • 元素定位
  • 店铺所有宝贝
  • 单个宝贝详细信息
  • 相关链接

摘要

将通过一个电商业务场景下的真实需求,带领大家零基础入门影刀编码版,本系列将会分三步讲解,从接到需求到最后完成发版,整个过程中我们需要做些什么?带你们走一个完整开发流程。

接上文《一个例子带你入门影刀编码版(一)》

本文主要讲解上文拆出的各个模块的实现,主要包含:

  • 打开网页,登录淘宝
  • 抓取总页数,循环
  • 抓取每一页信息

涉及内容主要包含:元素定位–>选中元素的属性–>与选中元素进行交互(点击,悬浮,填写等)
在这里插入图片描述

元素定位

浏览器 按F12 或选中一个页面元素鼠标右键检查
定位到元素后copy xpath,如果用其他方式可以选择对应路径,然后通过修改标签的属性去进行限制调整
更详细的知识请查阅前端资料了解下html的结构
在这里插入图片描述

店铺所有宝贝

涉及知识点:

  • 与网页建立交互
  • xpath定位(所有)元素
  • 元素点击
  • 元素属性
  • 循环判断
  • 影刀数据表格处理
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

    # webBrowser = login_info()# url = "https://gap.tmall.com/search.htm"# webBrowser.navigate(url)# 随机休眠避免反扒# sleep(random.uniform(2,3))# 避免重复开网页以及网页跳转,测试时直接激活当前网页即可webBrowser = xbot.web.get_active(mode="chrome")page_count = 0while True:all_id_elements = webBrowser.find_all_by_xpath('//div[@class="J_TItems"]/div')# print(len(all_id_elements))result = []for element in all_id_elements:if element.get_attribute("class")=="pagination":# print("到底了,点击下一页翻页")# breaknext_page_btn = element.find_by_xpath('//a[text()="下一页"]')# 判断下一页是否可用,不可用则到末尾页了next_page_btn_stau = next_page_btn.get_attribute("class")if next_page_btn_stau !="disable":next_page_btn.click()break # 跳出当前循环else:# 获取每一组(一排5个)商品dl_elements = element.find_all_by_xpath("dl")for dl_element in dl_elements:ID = dl_element.get_attribute("data-id")ID_element = dl_element.find_by_xpath('dt/a/img')ID_title = ID_element.get_attribute("alt")ID_main_pic = ID_element.get_attribute("src")print([ID,ID_title,ID_main_pic])result.append([ID,ID_title,ID_main_pic])page_count+=1print(f"第{page_count}页抓取完成!")if next_page_btn_stau =="disable":break # 跳出所有循环# 影刀的数据表格处理# 对于apI路径:xbot->app->databook # 写入前先清空xbot.app.databook.clear()# 数组插入数据表格xbot.app.databook.set_range(1,1,result)# 数据表格导出到对应文件路径xbot.app.databook.export_data("GAP全店商品明细.xlsx")

单个宝贝详细信息

  • 点击跳转,句柄切换
  • 输入表单提交
  • 网页元素处理
  • xpath多种定位方法
    在这里插入图片描述
# 输入表单提交# 避免重复开网页以及网页跳转,测试时直接激活当前网页即可webBrowser = xbot.web.get_active(mode="chrome")# 第一次做这个案例时用的python 当时taobao还可以搜ID# 现在搜不了,这里还是提一下输入表单提交吧,就用第一个的关键词欧阳娜娜同款搜吧# 其实和其他处理一样,python会复杂一些,影刀里面就简单很多# 定位到要输入框input_element = webBrowser.find_by_xpath('//*[@id="mq"]')# 输入内容input_element.input("欧阳娜娜同款")# 提交搜索submit_btn = webBrowser.find_by_xpath('//*[@id="J_CurrShopBtn"]')submit_btn.click()
 # 避免重复开网页以及网页跳转,测试时直接激活当前网页即可# webBrowser = xbot.web.get_active(mode="chrome")# main_title = webBrowser.get_title()# # # 用第一个商品测试# ID_element = webBrowser.find_by_xpath('//dl[@data-id="734979928111"]')# ID_element.click()# 这里跳转后Python需要获取句柄进行切换# 影刀可以直接用get_active进行切换,或者get_title也行,因为不知道每一页商品的title,所以用get_active最好# 其实这个title就是商品的title# 但是要切换回来应该用get_title,因为你的主网页的title是固定的webBrowser= xbot.web.get_active(mode="chrome")# print(webBrowser.get_url())# 验证下是否切进来# 获取商品标题TITLE = webBrowser.find_by_xpath('//h1[contains(@class,mainTitle)]').get_text()active_price = webBrowser.find_all_by_xpath('//span[contains(@class,"Price--priceText")]')[0].get_text()discounts = webBrowser.find_by_xpath('//span[text()="优惠:"]/../span[contains(@class,"caption")]').get_attribute("title")active = webBrowser.find_by_xpath('//span[text()="活动:"]/../span[contains(@class,"caption")]').get_attribute("title")item_infos = webBrowser.find_by_xpath('//span[text()="宝贝参数:"]/..').get_text()print(TITLE,active_price,discounts,active,item_infos)# 关闭当前页# webBrowser.close()# 切回搜索页# webBrowser = xbot.web.get(main_title,mode="chrome")pass

相关链接

【1】.影刀自动化采集底层逻辑
【2】.一个例子带你入门影刀编码版(一)
【3】.一个例子带你入门影刀编码版(三)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/218490.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

滑动窗口最大值和前K个高频元素

滑动窗口最大值和前K个高频元素 239. 滑动窗口最大值 核心:建立一个单调队列,维护里面的最大值,并且从大到小的顺序即可!【只需要维护有可能成为窗口里最大值的元素就可以了,同时保证队列里的元素数值是由大到小的。…

BugKu-Web-Simple_SSTI_1Simple_SSTI_2(浅析SSTI模板注入!)

何为SSTI模块注入? SSTI即服务器端模板注入(Server-Side Template Injection),是一种注入漏洞。 服务端接收了用户的恶意输入以后,未经任何处理就将其作为Web应用模板内容的一部分,模板引擎在进行目标编译渲…

深入理解TheadLocal的使用场景和注意事项

前言 在日常实际开发当中我们往往会看到项目中有使用 ThreadLocal 的场景,大多数人有时候可能涉及不到自己的业务则没有进行关注。通常我在看代码时对于一些未知的东西常常引起我的好奇,我往往会分析:为什么要这么做?好处是什么&…

uniapp todo list

uniapp github 开源项目推荐系统 github-掘金

SQL基础理论篇(十二):游标

文章目录 简介什么是游标如何使用游标参考文献 简介 sql编程与传统编程最大的区别之一,就是sql是面向集合的思考方式,更加关注“获取什么”,而不是如何获取。因为sql本身是以关系模型和集合论作为基础的。 在有的情况下,我们不需…

fuxploide,一款针对文件上传的Fuzz检测工具

fuxploide,一款针对文件上传的Fuzz检测工具 1.工具概述2.安装3.参数解析4.使用案例1.工具概述 Fuxploider 是一种开源渗透测试工具,可自动检测和利用文件上传表单缺陷。该工具能够检测允许上传的文件类型,并能够检测哪种技术最适合在所需的 Web 服务器上上传 Web Shell 或任…

【ARM Trace32(劳特巴赫) 使用介绍 1.2 - ARM 系统调试中常见的挑战】

请阅读【Trace32 ARM 专栏导读】 文章目录 ARM 系统调试中常见的挑战ARM 系统调试接口简例DAP-Debug Access portDAP 状态检查多核调试虚拟/物理地址Cache 数据一致性问题系统异常系统复位系统死机PC 采样Memory 采样RAM/Core Dump 分析小概率问题ARM 系统调试中常见的挑战 调试…

交直流充电桩检测

随着电动汽车的普及,充电桩的需求也在不断增加。为了保证充电桩的正常运行和使用安全,对其进行定期检测是非常必要的。检查充电桩的外壳是否有破损、变形等现象,以及充电桩的标识是否清晰可见。同时,还要检查充电桩的接口是否完好…

图像融合——现有比较火的网络

在深度学习中,用于图像融合的详细网络(深度神经网络)通常是为了学习如何结合来自多个源的信息以生成一个单一、增强的输出图像。这些网络可以基于不同的架构设计,下面是一些常用于图像融合任务的深度学习网络类型: 卷积…

Elasticsearch:使用 OpenAI 生成嵌入并进行向量搜索 - nodejs

在我之前的文章: Elasticsearch:使用 Open AI 和 Langchain 的 RAG - Retrieval Augmented Generation (一)(二)(三)(四)​​​​​ 我详细地描述了如何使用…

自然语言处理第2天:自然语言处理词语编码

​ ☁️主页 Nowl 🔥专栏 《自然语言处理》 📑君子坐而论道,少年起而行之 ​​ 文章目录 一、自然语言处理介绍二、常见的词编码方式1.one-hot介绍缺点 2.词嵌入介绍说明 三、代码演示四、结语 一、自然语言处理介绍 自然语言处理&#xf…

短视频时代,不直播带货怎么获得一手流量?

我是电商珠珠 短视频的出现改变了每个人的娱乐方式,国内的三大巨头:快手、视频号、抖音,这三个的市场定位也有着一定的区别。 快手最早成立于12年11月,面对的用户比较广,整体定位三四线城市,男女均衡。其…

5、Grounded Segement Anything

github sam安装与基本使用 stable diffusion安装与基本使用 安装GroundingDINO git clone https://github.com/IDEA-Research/GroundingDINO.git cd GroundingDINO pip install -e .pip install diffusers transformers accelerate scipy safetensors安装RAM&Tag2Text …

深度学习基本概念

1.全连接层 全连接层就是该层的所有节点与输入节点全部相连,如图所 示。假设输入节点为X1, X 2, X 3,输出节点为 Y 1, Y 2, Y 3, Y 4。令 矩阵 W 代表全连接层的权重, W 12也就代表 …

【C】⽂件操作

1. 为什么使⽤⽂件? 如果没有⽂件,我们写的程序的数据是存储在电脑的内存中,如果程序退出,内存回收,数据就丢失了,等再次运⾏程序,是看不到上次程序的数据的,如果要将数据进⾏持久化…

世微 AP5199S 降压恒流车灯驱动IC 兼容HV9910

说明 AP5199S 是一款外围电路简单的多功能平均电流 型 LED 恒流驱动器,适用于宽电压范围的非隔离式 大功率恒流 LED 驱动领域。 芯片 PWM 端口支持超小占空比的 PWM 调光, 可响应最小 60ns 脉宽。芯片采用我司专利算法,为客 户提供最佳解决方…

AIGC时代,如何保障ai绘图的算力需求

AIGC是目前非常热门的技术领域,被广泛应用于各个行业和领域,但同时AIGC也面临着诸多的痛点,那么如何解决这些痛点问题呢?云时代,又是如何通过云电脑赋能AIGC行业的,那么一起来文章中了解一下吧。 AIGC是什…

Trie 树详解

Trie 树详解 Trie 树(字典树)是一种用于高效存储和搜索字符串集合的树状数据结构。它的主要特点是能够在O(N)时间内实现字符串的插入、删除和搜索操作,其中 N 是字符串的长度。Trie 树的结构适用于敏感词过滤、单词搜索、自动补全等场景。在…

【HarmonyOS】【DevEco Studio】安装教程及环境配置问题解决

目录 一、DevEco Studio 安装二、配置环境ohmp安装报错问题解决方法一:注册表删除数值(没解决)方法二:进入DevEco Studio点击Settings进入设置(没解决)方法三:自己去官网下载ohmp的包安装&#…

C_8练习题答案

一、单项选择题(本大题共20小题,每小题2分,共40分。在每小题给出的四个备选项中,选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。) 编写C语言程序一般需经过的几个步骤依次是(B)。A.编辑、调试、编译、连接 B.编辑、编译、连接、运行 C.编译、调试、编辑、连…