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

摘要

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

需求分析

需求说明:需要获取指定商家的所有在售商品的详细信息,并解析详情页信息。

需求拆解:
如下图所示,
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

伪代码编写

如上图,需要登录才会显示商品
结合上文影刀自动化采集底层逻辑
的采集基础流程,先和浏览器建立交互,登录淘宝,逐个采集每个商品信息
在这里插入图片描述
伪代码如下

打开网页
登录淘宝
抓取总页数
for 循环 页数:
	抓取每一页信息
	{
	# 抓取每一页信息需要实现
	抓取标题、到手价、优惠活动信息,宝贝参数等
	}

代码实现

在这里插入图片描述

先使用影刀实现浏览器的交互,打开网页,登录淘宝

# 第一步 影刀中与浏览器建立联系的三种方法,具体参数定义可以参考函数解释,重点参数mode:选择浏览器,默认影刀浏览器
# 三种不同用法的区别
# 主要功能一致:通过与指定浏览器建立链接返回窗口句柄给影刀,赋值webBrowser,后面所有基于网页的操作都要通过这个网页对象webBrowser
# 不同的是
# create:创建,需要给出url,通过在浏览器中新打开一个窗口指向url地址
# get:通过窗口标题获取符合标题的窗口,不会执行打开跳转,需要提前手动打开
# get_active:获取当前激活的窗口句柄,即你切换进影刀之前的鼠标所在窗口
webBrowser = xbot.web.create("www.taobao.com",mode="chrome")
# webBrowser = xbot.web.get("淘宝",mode="chrome")
 # webBrowser = xbot.web.get_active(mode="chrome")
# 看个人习惯,以及应用场景,常用create,这里我们选择create

在这里插入图片描述

    webBrowser = xbot.web.create("www.taobao.com",mode="chrome")
    # webBrowser = xbot.web.get("淘宝",mode="chrome")
    # webBrowser = xbot.web.get_active(mode="chrome")

# 与网页建立交互的方式如下图,都在xbot -> web ->WebElement下,具体方法可以查看说明
# 我个人比较常用的就是find_by_xpath (找一个元素) --》对应的find_all_by_xpath(找符合条件的所有元素)
# 这里说明一下:影刀与Python的区别,selenium支持找一个(默认第一个)影刀不支持,会报错,如果用find_by_xpath,必须保证限定条件下只能找到一个
# 这里用find_all_by_xpath 主要是分析网页发现,登录前和登录后这个element是存在与不存在的关系
# 所以通过能不能找到来判断你是否登录了
    user_name_elements = webBrowser.find_all_by_xpath('//div[@class="site-nav-user"]/a',timeout=3)
    if not  len(user_name_elements):
		# 通过提示框阻断程序继续执行,手动登录后再继续,关于提示框会有很多类型,参考官方APi
		# API路径在 xbot ->app ->dialog 
        xbot.app.dialog.show_message_box("提示","请先登录您的个人淘宝账号")
        user_name_elements = webBrowser.find_all_by_xpath('//div[@class="site-nav-user"]/a')
    # 这里是上一节提到的获取完网页对象后对网页对象的操作,获取网页元素的文本属性
    user_name = user_name_elements[0].get_text()
    # print(user_name)
    return True

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

完整代码

# 今天的讲解就先到这里了,第一部分登录模块已经实现了
# 后面继续每个模块的实现
def login_info():
    webBrowser = xbot.web.create("www.taobao.com",mode="chrome")
    user_name_elements = webBrowser.find_all_by_xpath('//div[@class="site-nav-user"]/a',timeout=3)
    if not  len(user_name_elements):
        xbot.app.dialog.show_message_box("提示","请先登录您的个人淘宝账号")
        user_name_elements = webBrowser.find_all_by_xpath('//div[@class="site-nav-user"]/a')
    user_name = user_name_elements[0].get_text()
    return True

相关链接

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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

诡途

你的鼓励是我 创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值