使用selenium web驱动程序进行抓取

2024-05-12 14:28:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在抓取此页面的URLhttps://www.betexplorer.com/soccer/russia/premier-league-2019-2020/results/

对于像这样的每个URL https://www.betexplorer.com/soccer/russia/premier-league-2019-2020/cska-moscow-fc-tambov/8Ya3mpOC/ 我想从365个开局赔率中获利,我使用这部分代码

    try:
        driver.find_element_by_xpath("//*[@id='sortable-1']/tbody/tr[6]/td[4]/span").click()
        sleep(3)
        homeodd = driver.find_element_by_xpath('//table[starts-with(@id,"aodds")]//tr[th="Opening odds"]/following-sibling::tr/td[@class="bold"]').text
        print (homeodd)
    except NoSuchElementException:
        homeodd = 'No odds found'
        print(homeodd)

有了这段代码,我可以随心所欲,但当我尝试使用X时,2个开局赔率的结果是空白的

    try:
        driver.find_element_by_xpath("//*[@id='sortable-1']/tbody/tr[6]/td[5]/span").click()
        sleep(3)
        drawodd = driver.find_element_by_xpath('//table[starts-with(@id,"aodds")]//tr[th="Opening odds"]/following-sibling::tr/td[@class="bold"]').text
        print (drawodd)
    except NoSuchElementException:
        drawodd = 'No odds found'
        print(drawodd)

此外,在一些页面中,没有弹出窗口来记录赔率,我尝试使用这部分代码

else:
     homeodd = driver.find_element_by_xpath("//*[@id='sortable-1']/tbody/tr[6]/td[4]/span").text
     print (homeodd)

Tags: 代码idbydriverelementfindxpathtr
1条回答
网友
1楼 · 发布于 2024-05-12 14:28:54

您应该修复XPath表达式。对前3个使用findElementfindElements最后一次

要想回家,请执行以下操作:

//td[a[.="bet365"]]/following-sibling::td[span][1]/span

要获得平局,请执行以下操作:

//td[a[.="bet365"]]/following-sibling::td[span][2]/span

要想摆脱奇数:

//td[a[.="bet365"]]/following-sibling::td[span][3]/span

要获得所有这些信息:

//td[a[.="bet365"]]/following-sibling::td[span]/span

因为您调用了driver.find_elements_by_xpath1次,所以获得所有这些可能会更好。对于每个匹配,将结果的每个元素(一个列表)存储在特定列表中(将第一个元素追加到主奇数列表中,将第二个元素追加到抽签奇数列表中,将第三个元素追加到客场奇数列表中)

编辑:要获得开盘赔率,请从属性^{中提取值。XPath:

//td[a[.="bet365"]]/following-sibling::td[span][1]/@data-opening-odd
//td[a[.="bet365"]]/following-sibling::td[span][2]/@data-opening-odd
//td[a[.="bet365"]]/following-sibling::td[span][3]/@data-opening-odd
//td[a[.="bet365"]]/following-sibling::td[span]/@data-opening-odd

Selenium语法:

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")

相关问题 更多 >