我目前正在使用selenium、bs4和python进行抓取,但是在检查Xpath是否存在时遇到了一个问题,下面是我的代码:def hasXpath(xpath):
try:
browser.get(quote_page)
self.browser.find_element_by_xpath(xpath)
return True
except:
return False
# IF PRICELIST EXISTS CONDITION/
if hasXpath("(//div[@id='product-header h4']//span)[last()-2]") or hasXpath("(//div[@id='product-header']//span)[last()-1]") or hasXpath("(//div[@id='product-header']//span)[last()]"):
#No. of Items Per Retail(NEED LOGIN)
somthing = browser.find_element_by_xpath("(//div[@id='product-header']//td)[21]").get_attribute("innerText")
print(somthing)
#Retail Price(NEED LOGIN)
browser.get(quote_page)
somthing1 = browser.find_element_by_xpath("(//div[@id='product-header']//span)[last()]").get_attribute("innerText")
print(somthing1)
if hasXpath("(//div[@id='product-header']//span)[last()-1]"):
#1No. of Items Per Retail(NEED LOGIN)
something = browser.find_element_by_xpath("(//div[@id='product-header']//td)[19]").get_attribute("innerText")
print(something)
#1Retail Price(NEED LOGIN)
browser.get(quote_page)
something = browser.find_element_by_xpath("(//div[@id='product-header']//span)[last()-1]").get_attribute("innerText")
print(something1)
else:
print("It didn't go inside")
如您所见,它有一个简单的函数hasXpath(),我在它下面的IF语句中为条件传递xpath。然而,当我测试它时,一切似乎都指向else语句。我也试着把真实的情况加倍,但没有运气。我在实施这一点时做错了什么?在