############################################################ ### Project: coin ### File: upc.py ### Description: scapes the item's name by using the its UPC ### Version: 1.0 ############################################################ import time from seleniumbase import Driver from constants import * driver = Driver(uc=True) driver.implicitly_wait(5) # get_name_from_upc(upc, wait_interval, max_tries): will try to get # the item's name from stocktrack.ca. def get_name_from_upc(upc: str, wait_interval=1, max_tries=30) -> str: url = "https://stocktrack.ca/wm/index.php?s=wm&upc=" + upc driver.get(url) upc = upc.lstrip("0") print("Removed leading 0's:", upc) for cookie in COOKIE_DICT_LIST: driver.add_cookie(cookie) driver.refresh() name = "" pattern_front = "target=\"_blank\">" pattern_back_upc = "
UPC: " + upc + "
" pattern_back_sku = "
SKU:" tries = 0 while tries < max_tries: if __debug__: print("Iteration No.", tries) tries = tries + 1 time.sleep(wait_interval) page = str(driver.execute_script( "return document.getElementsByTagName('html')[0].innerHTML")) back_upc_idx = page.find(pattern_back_upc) front_idx = page.rfind(pattern_front, 0, back_upc_idx) back_sku_idx = page.rfind(pattern_back_sku, 0, back_upc_idx) if __debug__: p = open("page.html", "w") print(page, file=p) if back_upc_idx == -1 or front_idx == -1: continue else: name = page[front_idx + len(pattern_front) : back_sku_idx] break return name.replace(" ", "\n")