Python Selenium Webscrape

时间:2018-11-21 18:57:43

标签: python selenium web-scraping

您好,我正在尝试使用pyhton和硒对网页进行网页抓取。我试图从页面获取的信息是比赛信息/计分板。例如当前设置,玩家名称,每个玩家的积分。我不断收到TimeoutException。有人可以告诉我如何在下面检索此信息吗?是指向该页面示例的链接。

https://www.bovada.lv/sports/tennis/itf-men/chile-singles/a-tabilo-i-monzon-201811211325

下面是我的代码

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
from bs4 import BeautifulSoup

driver = webdriver.Chrome()  
driver.maximize_window()
wait = WebDriverWait(driver, 50)
small_wait = WebDriverWait(driver, 50)


driver.execute_script('window.open("https://www.bovada.lv/sports/tennis/itf-men/chile-singles/a-tabilo-i-monzon-201811211325","_self")')

#//*[@id="tracker__header"]
dat = []
try:
    dat.append([wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="tracker__header"]/div/div[1]/div/div[2]'))).text])
except TimeoutException:
    print('error')

driver.quit() 

以下是我想从网站获得的信息 enter image description here

2 个答案:

答案 0 :(得分:3)

您需要切换到iframe以获得价值:

driver.switch_to.frame(driver.find_element_by_css_selector('iframe[id^="iframe-tracker-"]'))
try:
    dat.append(wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="tracker__header"]/div/div[1]/div/div[2]'))).text)
except TimeoutException:
    print('error')

答案 1 :(得分:0)

您最需要做的是切换到框架。您可以通过检查element并找到iframe部分来做到这一点。右键单击is,然后复制x路径。

iframe = driver.find_element_by_xpath('YOUR IFRAME XPATH)
driver.switch_to.frame(iframe)

现在,希望您可以很好地运行代码。