【问题标题】:Element found on bottum of web page as well也可以在网页底部找到元素
【发布时间】:2021-07-13 07:14:22
【问题描述】:

基本上,我觉得灭火的唯一方法是用火来获得 gpu,我在编码方面有点菜鸟,但我遇到了一个问题。所以我搜索的机器人搜索了 2 个元素“btn-disabled”(表示已售罄)和“btn-primary”(表示有库存),但这是我现在的问题。当我要查找的项目禁用 btn 时,它发现 btn-primary 已在页面底部准备就绪,如果您向下滚动一下您可能感兴趣的其他项目,BestBuy 有一个部分。他们是否有任何修复这???

【问题讨论】:

  • 尝试不同的标签来搜索元素(例如,如果 btn-primary + another)

标签: python selenium-chromedriver bots


【解决方案1】:

在不知道您正在解析的特定页面的情况下,您只能猜测解决方案,但您在很大程度上已经回答了自己的问题。字符串btn-disabled在页面上不够独特,无法在您的算法中触发肯定匹配。

一些建议:

  • 寻找“已售罄”商品的其他独特特征,例如字符串“Sold Out”。
  • 看看您是否可以创建一个带有仅返回数据子集的属性的 HTTP 请求版本,从而使您的算法正常工作。 (即没有感兴趣的项目等...)
  • 如果您无法修改 HTTP 请求以最小化 HTTP 响应中返回的数据,请找到一种方法让您的机器人忽略页面中某个特定点之外的数据。就像在“感兴趣的项目”部分开始的标签处一样。

(在包含要解析的代码和页面的 cmets 之后添加的编辑。)

您的代码必须对要解析的每个页面做出一些假设,但这可能会有所帮助:

buyButton = False
while not buyButton: 
try: browser.find_element_by_class_name("btn-disabled") 
     print("Button isnt ready yet.")
     time.sleep(5) 
     browser.refresh(3) 
except: addToCartBtn = addButton = browser.find_element_by_class_name("add-to-cart-button") 
        print("Button was clicked") 
        addToCartBtn.click() 
        buyButton = True

我通过一些来源分析发现,当一件商品售罄时,Sold-Out 按钮似乎包含一个btn-disabled 类。因此,首先搜索该类别可能是立即确定该商品是否售罄的好方法。现在,如果该类不存在,那么就会触发 except,然后您应该寻找一个带有 add-to-cart-button 类的按钮,根据我的分析,该按钮仅在商品未售罄时才存在于按钮上。有一些衍生字符串看起来像 add-to-cart-button,但据我所知,唯一一个类值似乎是主要项目的“添加到购物车”按钮上的那个。

【讨论】:

  • 抱歉回复晚了。 bestbuy.com/site/… 这是一个例子。它在百思买。 buyButton = False while not buyButton: try: addToCartBtn = addButton = browser.find_element_by_class_name("data-sku-id=6439402") print("Button isnt ready yet.") time.sleep(5) browser.refresh(3) except : addToCartBtn = addButton = browser.find_element_by_class_name("btn-primary") print("按钮被点击") addToCartBtn.click() buyButton = True
  • 对我上次评论中的垃圾邮件感到抱歉,但那是我到目前为止的代码。我不确定我应该改变它,因为它也在屏幕底部拾取相同的元素。例如,我将如何使用 sku 使其具体化?
  • 您不应该在 cmets 中发布您的代码。将代码作为上述问题的一部分。
猜你喜欢
  • 2016-02-25
  • 2018-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-11
  • 1970-01-01
  • 2015-11-23
  • 2019-04-16
相关资源
最近更新 更多