【问题标题】:web scraping with selenium python使用 selenium python 进行网页抓取
【发布时间】:2020-08-12 08:34:42
【问题描述】:

我会在这个页面上刮开开盘赔率https://www.betexplorer.com/soccer/russia/premier-league/results/ 我试过这段代码:

   try:
        driver.find_element_by_xpath("//td[a[.='bet365']]/following-sibling::td[span]")
    except NoSuchElementException:
        homeodd = 'no bet365 odd'
        drawodd = 'no bet365 odd'
        awayodd = 'no bet365 odd'
    else:
        driver.find_element_by_xpath("//*[@id='sortable-1']/tbody/tr[6]/td[4]").click()
        sleep(3)
        homeodd = driver.find_element_by_xpath("//table[ends-with(@id,'16')]//tr[th='Opening odds']/following-sibling::tr/td[@class='bold']").text
        print(homeodd)
        driver.find_element_by_xpath("//*[@id='sortable-1']/tbody/tr[6]/td[5]").click()
        sleep(3)
        drawodd = driver.find_element_by_xpath("//table[ends-with(@id,'16')]//tr[th='Opening odds']/following-sibling::tr/td[@class='bold']").text
        print(drawodd)
        driver.find_element_by_xpath("//*[@id='sortable-1']/tbody/tr[6]/td[6]").click()
        sleep(3)
        awayodd = driver.find_element_by_xpath("//table[ends-with(@id,'16')]//tr[th='Opening odds']/following-sibling::tr/td[@class='bold']").text
        print(awayodd)

我有这个错误: SyntaxError: Failed to execute 'evaluate' on 'Document': The string '//table[ends-with(@id,'16')]//tr[th='Opening odds' ]/following-sibling::tr/td[@class='bold']' 不是有效的 XPath 表达式。 但是我错误的 xpath 语法。

问题是这个页面没有data-opening-odd属性。我在上一篇文章中询问了另一个 scraping with selenium web driver 并且在社区的一个很好的建议下我找到了这个很好的解决方案

try:
        driver.find_element_by_xpath("//td[a[.='bet365']]/following-sibling::td[span]")
    except NoSuchElementException:
        homeodd = 'no bet365 odd'
        drawodd = 'no bet365 odd'
        awayodd = 'no bet365 odd'
    else:
        homeodd = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, '//td[a[.="bet365"]]/following-sibling::td[span][1]'))).get_attribute("data-opening-odd")
        drawodd = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, '//td[a[.="bet365"]]/following-sibling::td[span][2]'))).get_attribute("data-opening-odd")
        awayodd = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, '//td[a[.="bet365"]]/following-sibling::td[span][3]'))).get_attribute("data-opening-odd")
    

有什么建议可以在不从属性data-opening-odd 中获取几率的情况下调整第二种解决方案?谢谢

【问题讨论】:

    标签: python selenium selenium-webdriver xpath web-scraping


    【解决方案1】:

    一个简单的解决方案是使用名为 Parse Hub 的软件:https://www.parsehub.com/quickstart

    您可以使用它抓取任何网站的数据!它真的很容易使用如果您在使用它时需要任何帮助,请告诉我,我会帮助您,但我认为 YouTube 教程可能足以学习如何使用它!

    【讨论】:

      猜你喜欢
      • 2021-05-08
      • 2018-07-20
      • 2020-03-13
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多