没有得到想要的XPath

时间:2018-01-01 11:32:13

标签: python selenium xpath web-scraping

总结一下,如何让XPath在我的脚本中获取赔率。

提供不同值的XPath。

groups = ".//div[contains(@class, 'gl-ParticipantOddsOnlyDarker gl')]"

xp_ba3 = ".//span[contains(@class, 'gl-Participa')]"

两个组的XPath需求和xp_ba3需要长度相同才能正常运行(我相信)。

所需的XPath看起来像:

XPath://div[contains(@class, 'gl-Market_HasLabels')]/following-sibling::div[contains(@class, 'gl-Market_PWidth-12-3333')][1]//div[contains(@class, 'gl-ParticipantOddsOnly')]

这样可行但是当我添加这个逻辑并运行script时 - 它不起作用。

网页odds我在追求。

我的输出而不是不同的赔率看起来像:

[['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87'], ['2.87']]

我怎样才能获得工作的机会?

HTML:

<div class="gl-ParticipantOddsOnlyDarker gl-ParticipantOddsOnly gl-Participant_General sl-MarketCouponAdvancedBase_LastChild " >
        <span class="gl-ParticipantOddsOnly_Odds" > 2.45 </span>
    </div ><span class="gl-ParticipantOddsOnly_Odds">2.45</span> 

来自website

1 个答案:

答案 0 :(得分:0)

所以主要问题是他们的HTML是按列而不是行设置的,这使得获取相关数据变得更加困难。

对于游戏名称,您可以使用CSS选择器

div.sl-CouponParticipantWithBookCloses_NameContainer

对于1中的赔率,您需要使用XPath

//div[contains(@class,'sl-MarketCouponValuesExplicit33')][./div[contains(@class,'gl-MarketColumnHeader')][.='1']]//span[@class='gl-ParticipantOddsOnly_Odds']

XPath正在寻找DIV,它是列的父容器。然后它会查找包含&#39; 1&#39;在标题中,然后从那个获得赔率。

您可能希望进行一些基本验证,即每次匹配返回的元素数量或您的赔率可能与正确的游戏不匹配。他们目前正在返回相同的数字。