fenago / blog

2 stars 6 forks source link

scraper_bwin.py ---> UnboundLocalError: local variable 'odd' referenced before assignment #1

Open iddddddi opened 1 year ago

iddddddi commented 1 year ago

Hello, I am learning a lot with your project, I'm creating other scrapers for the api, learning from the ones you have created.

but i have this problem.

I have tried with global variables but nothing works for me and I don't know what could be happening.

It is in the if(odd):

def scrape_odds(driver):
    btts, teams = [], []
    box = driver.find_element("xpath", '//ms-grid[contains(@sortingtracking,"Live")]') 
    rows = WebDriverWait(box, 10).until(EC.presence_of_all_elements_located((By.CLASS_NA>
    for row in rows:  
        odds = row.find_element(By.CLASS_NAME, 'grid-option-group')
        try:
            empty_events = row.find_elements_by_class_name('empty') #removing empty odds
            odd = odds[0] if odds[0] not in empty_events else ''
        except: 
            pass
        **if(odd):**
            btts.append(odd.text)
            grandparent = odd.find_element_by_xpath('./..').find_element_by_xpath('./..')
            teams.append(grandparent.find_element_by_class_name('grid-event-name').text)
iddddddi commented 1 year ago

i think i fixed it

---> **odd = ''**
def scrape_odds(driver):
    btts, teams = [], []
    box = driver.find_element("xpath", '//ms-grid[contains(@sortingtracking,"Live")]') 
    rows = WebDriverWait(box, 10).until(EC.presence_of_all_elements_located((By.CLASS_NA>

    for row in rows:
        odds = row.find_element(By.CLASS_NAME, 'grid-option-group')
----> **global odd**
        try:
            empty_events = row.find_elements_by_class_name('empty') #removing empty odd
            odd = odds[0] if odds[0] not in empty_events else ''
        except: 
            pass
        if(odd):
            btts.append(odd.text)
            grandparent = odd.find_element_by_xpath('./..').find_element_by_xpath('./..')
            teams.append(grandparent.find_element_by_class_name('grid-event-name').text)