用硒web驱动程序刮

时间:2020-08-07 13:39:46

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

我正在抓取该页面的网址https://www.betexplorer.com/soccer/russia/premier-league-2019-2020/results/

对于每个https://www.betexplorer.com/soccer/russia/premier-league-2019-2020/cska-moscow-fc-tambov/8Ya3mpOC/这样的网址 我想抓下bet365开局赔率,然后使用这部分代码

    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时,两个开局赔率我的结果空白

    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)

1 个答案:

答案 0 :(得分:1)

您应该修复XPath表达式。前三个使用isStretchWithOverflow="true"。最后一个使用findElement

要获得家庭赔率:

findElements

要使抽奖变得奇怪:

//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 1次。对于每个匹配项,将结果的每个元素(一个列表)存储在您的特定列表中(在本位奇数列表中附加第一个,在平局奇数列表中附加第二个,不在奇数列表中附加第三个)。

编辑:要获取开盘赔率,请从属性driver.find_elements_by_xpath中提取值。 XPath:

data-opening-odd

硒语法:

//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