硒click()无法关闭弹出窗口

时间:2020-10-26 20:10:51

标签: python html selenium web-scraping

我一直在研究假的“赌注机器人”以学习硒,但是我无法关闭有时会出现在网站上的弹出窗口。

>

我的方法是使用功能submit_bets();过滤后的游戏列表,格式为:

"League|team 1|team 2|Date|Probability in %|and prediction(1,X or 2)"

我从here获取数据。然后,对于每个已过滤的游戏,我都会在投注网站上打开联赛投注页面,然后浏览那里的所有游戏以查找已过滤的游戏并获得真实的赔率。对于filtered_games中的每个已过滤游戏,我需要打开下注网站的页面,如果弹出窗口出现,我将无法获取数据。

def submit_bets(filtered_games):
driver = webdriver.Chrome(PATH)
f=codecs.open("bets.txt","r", encoding='utf-8')
for line in filtered_games:
    l=line.split("|")
    print(l)
    driver.get(leagues_to_links.get(l[0]))
    scroll_down(driver)
    time.sleep(2)
    try:
        button = driver.find_element(By.XPATH, "/html/body/div[1]/div/section[2]/div[7]/div/div/div[1]/button" )
        driver.execute_script("arguments[0].scrollIntoView(true)", button)
        button.click()
    except:
        print("no button")
    games=driver.find_elements_by_class_name("events-list__grid__event")
    for i in games:
        game=str(i.text).split("\n")
        try:
            if forebet_teams_to_betano.get(l[1]) in game[2] and forebet_teams_to_betano.get(l[2]) in game[3]:
                print(game)
                if str(l[5]) == "1":
                    print("1")
                    print(str(game[7]))
                elif str(l[5]) == "X":
                    print("X")
                    print(str(game[9]))
                else:
                    print("2")
                    print(str(game[11]))
        except:
            print("")

In this link you can find the html of the page when the pop up shows up:

Github page with the html

In this link you can find the page files, you might have to refresh it sometimes to get the pop up

感谢您的时间,随时留下任何提示来改进我的代码。

1 个答案:

答案 0 :(得分:1)

我的解决方案:

#Closing popup for Portugese betting site

from selenium import webdriver
from selenium.webdriver.firefox.options import Options

URL = "https://www.betano.pt/sport/futebol/ligas/17083r/"    

# Browser options
options = Options()
options.headless = True
firefox_profile = webdriver.FirefoxProfile()
firefox_profile.set_preference("browser.privatebrowsing.autostart", True)

browser = webdriver.Firefox(firefox_profile=firefox_profile)
browser.get(URL)

##### Copy this part into your own code #####
try:
    browser.find_element_by_xpath('//button[@class="sb-modal__close__btn uk-modal-close-default uk-icon uk-close"]').click() # Click pop-up close button
    print("Pop-up closed.")
except:
    print("Pop-up button not found.")
#########

关闭此弹出窗口: enter image description here

请记住,这依赖于按钮的特定类名。您需要将try-except最后修改为您自己的代码。