Webscrape使用Python / Selenium进行Flashscore

时间:2016-06-09 22:03:27

标签: python selenium web-scraping

我开始学习使用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引起的?)

有人可以帮帮我吗?

1 个答案:

答案 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()