我开始学习使用Python和Selenium抓取网站。我选择selenium是因为我需要浏览网站,我也必须登录。
我编写了一个能够打开firefox窗口的脚本,它打开了网站www.flashscore.com。使用此脚本,我还可以登录并导航到他们拥有的不同体育部分(主菜单)。
代码:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
# open website
driver = webdriver.Firefox()
driver.get("http://www.flashscore.com")
# login
driver.find_element_by_id('signIn').click()
username = driver.find_element_by_id("email")
password = driver.find_element_by_id("passwd")
username.send_keys("*****")
password.send_keys("*****")
driver.find_element_by_name("login").click()
# go to the tennis section
link = driver.find_element_by_link_text('Tennis')
link.click()
#go to the live games tab in the tennis section
# ?????????????????????????????'
然后它变得更加困难。我还想导航到,例如,体育界的“现场比赛”和“完成”标签部分。这部分不起作用。我尝试了很多东西,但我无法进入其中一个标签。在分析网站时,我发现他们使用了一些Iframe。我还找到了一些代码来切换到Iframes窗口。但问题是,我找不到我要点击标签的Iframe的名称。也许Iframes不是问题,我看错了方法。 (也许这个问题是由一些javascript引起的?)
有人可以帮帮我吗?
答案 0 :(得分:1)
不,在这种情况下,iframe不是问题。 "直播游戏"元素不在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()