python 爬虫之判断元素是否存在

本文探讨了使用Python和Selenium查找网页元素时遇到NoSuchElementException异常的问题,通过尝试使用if语句判断元素是否存在,但发现find_element_by_link_text方法并不返回True/False,最终采用try/except结构成功捕获并处理了异常。
摘要由CSDN通过智能技术生成

在采用python查找网页某一元素,不存在的时候会抛出异常,一开始觉得browser.find_element_by_link_text会返回True/Flase,采用if/else 来判断,如下:

   if browser.find_element_by_link_text("亲,请登录"):
        browser.find_element_by_link_text("亲,请登录").click()
        print("请在15秒内完成扫码")
        time.sleep(20)
        browser.get("https://cart.taobao.com/cart.htm")
    else :
        print ("cannot found")

但是还是抛出异常:

Traceback (most recent call last):
  File "D:/workspace/pycharm/test/miaosha.py", line 64, in <module>
    login()
  File "D:/workspace/pycharm/test/miaosha.py", line 13, in login
    if browser.find_element_by_link_text("亲,请登录"):
  File "D:\Program Files\Anaconda3\envs\envs\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 419, in find_element_by_link_text
    return self.find_element(by=By.LINK_TEXT, value=link_text)
  File "D:\Program Files\Anaconda3\envs\envs\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 955, in find_element
    'value': value})['value']
  File "D:\Program Files\Anaconda3\envs\envs\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 312, in execute
    self.error_handler.check_response(response)
  File "D:\Program Files\Anaconda3\envs\envs\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 237, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: Unable to find element with link text == 亲,请登录

所以,采用try/except的方式,跳过异常,如下:

browser = webdriver.Ie()
try :
      browser.find_element_by_link_text("亲,请登录").click()
      print("请在15秒内完成扫码")
      time.sleep(20)
      browser.get("https://cart.taobao.com/cart.htm")
  except :
      print ("cannot found")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值