使用Python/Selenium的Webscrape Flashscore

使用Python/Selenium的Webscrape Flashscore,python,selenium,web-scraping,Python,Selenium,Web Scraping,我开始学习用Python和Selenium创建网站。我选择selenium是因为我需要浏览网站,而且我还必须登录 我写了一个可以打开firefox窗口的脚本,它可以打开网站www.flashscore.com。有了这个脚本,我还可以登录并导航到他们拥有的不同的运动部分(主菜单) 守则: 然后事情变得更难了。例如,我还想导航到体育部门的“实时游戏”和“完成”选项卡。这部分不行。我尝试了很多方法,但都无法进入其中一个选项卡。在分析网站时,我看到他们使用了一些iFrame。我还找到一些代码来切换到

我开始学习用Python和Selenium创建网站。我选择selenium是因为我需要浏览网站,而且我还必须登录

我写了一个可以打开firefox窗口的脚本,它可以打开网站www.flashscore.com。有了这个脚本,我还可以登录并导航到他们拥有的不同的运动部分(主菜单)

守则:



然后事情变得更难了。例如,我还想导航到体育部门的“实时游戏”和“完成”选项卡。这部分不行。我尝试了很多方法,但都无法进入其中一个选项卡。在分析网站时,我看到他们使用了一些iFrame。我还找到一些代码来切换到Iframes窗口。但问题是,我找不到我要单击的选项卡所在的Iframe的名称。也许Iframes不是问题所在,我是不是看错了方向。(问题可能是由javascript引起的?)


有人能帮我吗?

不,在这种情况下,iFrame不是问题所在。“Live games”元素不在
iframe
中。通过链接文本找到它,然后单击:

live_games_link = driver.find_element_by_link_text("LIVE Games")
live_games_link.click()
在实际尝试单击此链接之前,您可能需要等待此链接可单击:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

wait = WebDriverWait(driver, 10)

live_games_link = wait.until(EC.element_to_be_clickable((By.LINK_TEXT, "LIVE Games")))
live_games_link.click()

非常感谢你的反应。一个问题。运行脚本时出错。运行此脚本时:从selenium从selenium.webdriver.common.keys从selenium.webdriver.support.ui从selenium.webdriver.support导入WebDriverWait从selenium.webdriver.common.by导入所需条件为EC从selenium.webdriver.common.by导入#open webdriver=webdriver.Firefox()driver.get(“)#转到网球部分live#games#link=等待。直到(EC.element#u to#u可点击((By.link#TEXT,“live games”))live#games#link.click()我得到错误:live#games#link=等待。直到(EC.element#to#to#u可点击((By.link##TEXT,“live games”))NameError:name'wait'没有定义我让它工作。我只需要行:driver。隐式地等待(10)#秒。然后它对我工作。非常感谢你让我正确地排队!
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

wait = WebDriverWait(driver, 10)

live_games_link = wait.until(EC.element_to_be_clickable((By.LINK_TEXT, "LIVE Games")))
live_games_link.click()