【问题标题】:python selenium webscrapepython selenium webscrape
【发布时间】:2018-11-21 18:57:43
【问题描述】:

您好,我正在尝试使用 pyhton 和 selenium 抓取网页。我试图从页面获取的信息是匹配信息/记分板。例如当前组,球员姓名,每个球员的积分。我不断收到 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() 

以下是我想从网站获取的信息

【问题讨论】:

    标签: python selenium web-scraping


    【解决方案1】:

    需要切换到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')
    

    【讨论】:

      【解决方案2】:

      您最需要做的就是切换到框架。您可以通过检查元素并找到 iframe 部分来做到这一点。右键is并复制x-path。

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

      现在您可以正常运行您的代码了,希望如此。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-02-09
        • 1970-01-01
        • 1970-01-01
        • 2021-09-29
        • 1970-01-01
        • 1970-01-01
        • 2021-09-29
        • 1970-01-01
        相关资源
        最近更新 更多