监控商品库存方法之一——Selenium

这篇具有很好参考价值的文章主要介绍了监控商品库存方法之一——Selenium。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

日常遇到一些商品比较抢手的情况,经常无库存。所以总希望能够监控它的库存,并在有库存的时候进行提醒。那以某伊份为例,尝试基于Python的Selenium模块的监控方法。

01

什么是Selenium

监控商品库存方法之一——Selenium,selenium,python,测试工具,Powered by 金山文档

Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera,Edge等。这个工具的主要功能包括:测试与浏览器的兼容性——测试应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成.Net、Java、Perl等不同语言的测试脚本。

Selenium框架底层是使用JavaScript模拟真实用户对浏览器进行操作。测试脚本执行时,浏览器自动按照脚本代码做出点击,输入,打开,验证等操作,就像真实用户所做的一样,从终端用户的角度测试应用程序。使用简单,可使用Java,Python等多种语言编写用例脚本,使浏览器兼容性测试自动化成为可能,尽管在不同的浏览器上依然有细微的差别。

Selenium优点:模拟真实用户对浏览器进行操作。

Selenium缺点:啰嗦,一步错,步步错,需要加各种条件约束。

02

步骤及分析

2.1 提取商品链接地址

首先需要找到商品的链接地址,毕竟要用浏览器去访问。某伊份虽然是app端,但也可以通过各种分享的骚操作拿到地址

2.2 分析商品详情页中的关键词

比如库存数量,售罄等字眼,及其所在的元素位置。再复制出相应的选择器路径或xpath等,看个人喜好。

如这个的“已售罄”提示文本的xpath路径是:

//*[@id="app"]/div[2]/div/div[2]/ul/li[1]/div[1]/div[2]/span[2]

2.3 整理思路及步骤

这次要监控3个商品,思路如下:

打开页面→设定监控间隔→切换页面→刷新→获取关键词→切换页面→刷新→获取关键词→...→有货通知

2.4 其余补充

2.4.1 登录cookies暂先手动保存,通过代码置入浏览器中;

2.4.2 可选有头或无头模式,节省资源占用。有头就是看得到浏览器,无头就是看不到,但功能正常运行。

03

效果及代码

3.1 代码:

用push+做推送;

用os模块做简单输入控制,选择有头或无头;

用bro.add_cookie(),将手动抓取的cookies置入浏览器;

用几个变量记录监控到的有货次数,超过6次停止监控。

from selenium.webdriver import ChromeOptions
import time,os,json,requests
from selenium import webdriver
from urllib import parse

p_token= ''#push+

print("开始运行")
options = ChromeOptions()#设置
options.add_argument('--window-size=300,300')#设置窗口大小
h = input('输入1开启无头模式,输入任意内容关闭无头模式:')
if h == "1":
    options.add_argument('--headless')  # 无头模式
    print("启用 无头模式")
else:
    print("关闭 无头模式")
bro = webdriver.Chrome(options= options)#按设置创建浏览器
bro.get("https://m.laiyifen.com/citylife/lifeProDetail?channelSkuUnitId=115812******")#商品1
bro.delete_all_cookies()# 首先清除由于浏览器打开已有的cookies

with open('cookies_1.txt', 'r') as f: #cookies_1.txt在py源码目录下
    cookies_list = json.load(f)# 使用json读取cookies 注意读取的是文件 所以用load而不是loads
    for cookie in cookies_list:
        if isinstance(cookie.get('expiry'), float):
            cookie['expiry'] = int(cookie['expiry'])
        bro.add_cookie(cookie)

bro.get("https://m.laiyifen.com/citylife/lifeProDetail?channelSkuUnitId=115812*****")# 重新发送请求(这步是非常必要的,要不然携带完cookie之后仍然在登录界面)
time.sleep(1)
bro.execute_script('window.open("https://m.laiyifen.com/citylife/lifeProDetail?channelSkuUnitId=11581*****");') #商品2
time.sleep(1)
bro.execute_script('window.open("https://m.laiyifen.com/citylife/lifeProDetail?channelSkuUnitId=11581*******");') #商品3

handles = bro.window_handles #获取标签句柄
n = 1 #循环次数
ddok = 0 #有货次数
yhok = 0 #有货次数
hmok = 0 #有货次数
while True:
    i = 0
    for i in range(3):
        bro.switch_to.window(handles[i])#切换标签,实际标签第一个为0,第二个为2,第三个为1
        bro.refresh()
        #print(i)
        time.sleep(3)
        try:#正常运行下面代码
            r = bro.find_element_by_xpath('''//*[@id="app"]/div[2]/div/div[2]/ul/li[1]/div[1]/div[2]/span[2]''').text
            if r == "已售罄":
                if i == 0:
                    print("dd 已售罄")
                elif i == 1:
                    print("yh 已售罄")
                else:
                    print("hm 已售罄")
            elif str(r).find("库存") != -1:
                if i == 0:
                    ddok = ddok + 1
                    print("dd 有货")
                    if ddok <= 2:
                        t = str(time.time())
                        content = parse.quote_plus(t)  # url编码
                        title = parse.quote_plus('dd 有货')  # url编码
                        requests.get(f'http://www.pushplus.plus/send?token={p_token}&title={title}&content={content}')
                elif i == 1:
                    yhok = yhok + 1
                    print("yh 有货")
                    if yhok <= 2:
                        t = str(time.time())
                        content = parse.quote_plus(t)  # url编码
                        title = parse.quote_plus('yh 有货')  # url编码
                        requests.get(f'http://www.pushplus.plus/send?token={p_token}&title={title}&content={content}')
                else:
                    hmok = hmok + 1
                    print("hm 有货")
                    if hmok <= 2:
                        t = str(time.time())
                        content = parse.quote_plus(t)  # url编码
                        title = parse.quote_plus('hm 有货')  # url编码
                        requests.get(f'http://www.pushplus.plus/send?token={p_token}&title={title}&content={content}')
            else:
                if i == 0:
                    print("dd 已售罄")
                elif i == 1:
                    print("yh 已售罄")
                else:
                    print("hm 已售罄")
        except Exception:# 产生错误时运行的代码,Exception是一个类
            print('异常,未获取到数据')
        i = i + 1
    print(f"已运行{n}次")
    if 叮咚ok >= 6:  # 提醒了6次就结束循环
        print("已监控到6次,结束运行")
        break
    n = n + 1

bro.quit()
input('输入回车后继续:')

def ck_save():#保存cookies
    with open('cookies_1.txt', 'w') as f:
        # 将cookies保存为json格式
        f.write(json.dumps(bro.get_cookies()))

3.2 有头模式运行效果:

监控商品库存方法之一——Selenium,selenium,python,测试工具,Powered by 金山文档
监控商品库存方法之一——Selenium,selenium,python,测试工具,Powered by 金山文档

3.3 无头模式运行效果:

监控商品库存方法之一——Selenium,selenium,python,测试工具,Powered by 金山文档

动图跟3.1比起来没有浏览器,只有日志输出,就不录了。


这是之前第一次拿Selenium写的代码,供参考。原文链接:

https://mp.weixin.qq.com/s?__biz=Mzk0NzQyMTcwNw==&mid=2247483985&idx=1&sn=40828476bd58c3a3a54cc26521f55b6c&chksm=c3765535f401dc23d4667e028692a0a4eeb79ec561e3430335896faaea715174c81d9e2775bc&token=165543763&lang=zh_CN#rd

- End -

更多精彩文章

vxin关注【偶尔敲代码文章来源地址https://www.toymoban.com/news/detail-653576.html

到了这里,关于监控商品库存方法之一——Selenium的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python 面向对象利用selenium【获取某东商品信息】

    用python程序和谷歌selenium插件获取某东商品详细信息【商品名称、商品简介,超链接】 利用selenium自动化程序 中的css页面结构索取来获取详细数据 关于谷歌selenium的安装方法和使用方法 第一步检查自己谷歌浏览器的版本 1.1 找到设置:并鼠标点击进入 1.2进入设置选项后,下滑

    2024年01月16日
    浏览(47)
  • Python爬虫实战:selenium爬取电商平台商品数据(1)

    def index_page(page): “”\\\" 抓取索引页 :param page: 页码 “”\\\" print(‘正在爬取第’, str(page), ‘页数据’) try: url = ‘https://search.jd.com/Search?keyword=iPhoneev=exbrand_Apple’ driver.get(url) if page 1: input = driver.find_element_by_xpath(‘//*[@id=“J_bottomPage”]/span[2]/input’) button = driver.find_element_by_xpath(‘

    2024年04月28日
    浏览(45)
  • 【Python爬虫】基于selenium库爬取京东商品数据——以“七夕”为例

    小白学爬虫,费了一番功夫终于成功了哈哈!本文将结合本人踩雷经历,分享给各位学友~ 用写入方式打开名为data的csv文件,并确定将要提取的五项数据。 上面第一行代码值得一提,driver =  webdriver.Edge()括号内为Edge浏览器驱动程序地址,需要在Edge浏览器设置中查找Edge浏览器

    2024年02月06日
    浏览(57)
  • Python爬虫实战——Lazada商品数据(selenium自动化爬虫,xpath定位)

            在此说明,这个项目是我第一次真正去爬的一个网站,里面写的代码我自己都看不下去,但是已经不想花时间去重构了,所以看个乐呵就好,要喷也可以(下手轻一点)。这篇文算是记录我的学习中出现的一些问题,不建议拿来学习和真拿我的代码去爬Lazada的数据,

    2024年02月02日
    浏览(64)
  • selenium4 “Unable to obtain working Selenium Manager binary”的错误解决方式之一

    使用环境:python = 3.7 selenium = 4.11 浏览器:Edge 起因是想搞个脚本玩一玩,安装selenium的时候发现发现会报错。我是用conda安装的,第一次发现他给我安装的竟然是selenium3,然后就查阅了相关文档,发现py3.7是支持selenium4的,于是乎就升级到了最新的selenium4.11版本。 首先,是需

    2024年02月08日
    浏览(47)
  • 【Python+Selenium学习系列4】Selenium常用的方法

    目录 一、前言 二、基本方法 1、send_keys方法---模拟键盘输入 1.1 源代码 1.2 运行结果 2、text方法---用于获取文本值 2.1 源代码 2.2 运行结果 3、get_attribute()方法---用于获取属性值 ​3.1 源代码 3.2 运行结果 ​4、maximize_window()方法---实现浏览器窗口最大化 4.1源代码 4.2运行结果 5、

    2024年03月18日
    浏览(40)
  • Python + selenium 安装问题,pip install selenium失败及解决方法

              最近想要是使用Python 访问下浏览器,网上关于这些东西都很多,Python 安装和 selenium 的下载就不赘述,这里简单总结一下第一次安装Python + selenium中遇到的问题。     Python傻瓜式安装,但注意 安装目录选择 , 环境变量的添加 。     selenium.exe下载对应浏览器对应

    2024年02月11日
    浏览(66)
  • Selenium介绍--实例爬取京东商品信息与图片

    目录 一、Selenium简介 二、Selenium组成 三、Selenium特点 四、Selenium的基本使用 1.下载所用浏览器需要的驱动 2.创建项目并导入依赖 3.入门 3.代码演示 五、实例爬取京东商品信息与图片 _ 5.1 执行效果 操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chr

    2023年04月08日
    浏览(37)
  • Python + Selenium —— 常用控制方法!

    Selenium 体系中用来操作浏览器的 API 就是 WebDriver,WebDriver 针对多种语言都实现了一套 API,支持多种编程语言。 Selenium 通常用来做自动化测试,或者编写网络爬虫。 通常我们说的 Selenium 自动化操作,指的就是 WebDriver 中提供的控制方法。一般我们讲 Selenium 多半都是在谈 Web

    2024年01月24日
    浏览(39)
  • 【Python_Selenium学习笔记(一)】Selenium介绍及基本使用方法

    Selenium是一套 Web 网站的程序自动化操作解决方案,广泛应用于自动化测试及爬虫。此篇文章主要介绍 Selenium 的 安装和基本使用流程。 Selenium 框架的安装主要就是安装两样东西: Selenium 客户端库 和 浏览器驱动 。 1.1、Selenium 框架安装 使用 pip 命令安装 pip install selenium ,安装

    2023年04月13日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包